Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Tanya328
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 23
1

Перевод кода для MySQL в код для MS SQL Server

14.12.2016, 17:41. Просмотров 951. Ответов 17
Метки нет (Все метки)

SQL
1
SELECT `izdeliya`.`nazvanie_izdeliya` AS `nazvanie_izdeliya`,`izdeliya`.`id_izdeliya` AS `id_izdeliya`,`cehovaya_nakladnaya`.`data_nakl` AS `data_nakl`,`cehovaya_nakladnaya`.`id_sklada` AS `id_sklada`,SUM(`table_ceh_nakl`.`colichestvo_izdeliya`) AS `sumCehColIzd`,SUM((`izdeliya`.`price` * `table_ceh_nakl`.`colichestvo_izdeliya`)) AS `sumPrice` FROM ((`table_ceh_nakl` JOIN `izdeliya` ON((`table_ceh_nakl`.`id_izdeliya` = `izdeliya`.`id_izdeliya`))) JOIN `cehovaya_nakladnaya` ON((`cehovaya_nakladnaya`.`id_ceh_nakl` = `table_ceh_nakl`.`id_nakl`))) WHERE (MONTH(`cehovaya_nakladnaya`.`data_nakl`) = 6) GROUP BY `izdeliya`.`id_izdeliya`
Данный код должен работать в представлении MS SQL Server..

Задание: по документам "Цеховая накладная" получить общее количество каждого выпущеного ищделия по заданному складу в заданном месяце.
0
Миниатюры
Перевод кода для MySQL в код для MS SQL Server  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2016, 17:41
Ответы с готовыми решениями:

Microsoft SQL Server Management studio 17 не подключается к mysql server 5.7
Проще говоря studio его вообще не видит, пишу чтобы подключился (имя указываю...

Нужел ли для sql server-a .net?
нужел ли для sql server-a .net?

Драйвер с++ для подключения к ms sql server
Доброе уремяни суток, уважаемые форумчани!!! Подскажите пожалуйста. Исходники...

SQL Server для Windows 7 64 bit
pomogite gde mojno besplatno ska4at???

Выбор SQL Server для приложения
Всем привет! Начал проект который подразумевает использование базы данных. Это...

17
YuryK
1031 / 848 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
14.12.2016, 17:49 2
Лучший ответ Сообщение было отмечено Tanya328 как решение

Решение

замени кавычки на квадратные скобки
T-SQL
1
SELECT [izdeliya].[nazvanie_izdeliya] AS [nazvanie_izdeliya],[izdeliya].[id_izdeliya] AS ...
или убери вовсе
T-SQL
1
SELECT izdeliya.nazvanie_izdeliya AS nazvanie_izdeliya,izdeliya.id_izdeliya AS ...
и получишь работающий скрипт
1
Tanya328
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 23
14.12.2016, 18:32  [ТС] 3
Жалуйется на Group BY можете исправить
0
YuryK
1031 / 848 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
14.12.2016, 23:23 4
скинь, что получилось, сначала
ошибка "около Group BY " чаше относится не к Group BY, а к тому, что оно появилось неожиданно для парсера, например скобку перед ним пропустила.
В СКЛ искать ошибку надо глядя в скрипт, а не на слух
1
emppu2007
90 / 90 / 6
Регистрация: 04.05.2011
Сообщений: 171
15.12.2016, 12:16 5
А где группировка по тем полям, что не в агрегатах?

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT   izdeliya.nazvanie_izdeliya                              AS nazvanie_izdeliya, 
         izdeliya.id_izdeliya                                    AS id_izdeliya, 
         cehovaya_nakladnaya.data_nakl                           AS data_nakl, 
         cehovaya_nakladnaya.id_sklada                           AS id_sklada, 
         SUM(table_ceh_nakl.colichestvo_izdeliya)                  AS sumcehcolizd, 
         SUM(izdeliya.price * table_ceh_nakl.colichestvo_izdeliya) AS sumprice 
FROM     table_ceh_nakl 
JOIN     izdeliya ON table_ceh_nakl.id_izdeliya = izdeliya.id_izdeliya 
JOIN     cehovaya_nakladnaya ON cehovaya_nakladnaya.id_ceh_nakl = table_ceh_nakl.id_nakl 
WHERE    MONTH(cehovaya_nakladnaya.data_nakl) = 6 
GROUP BY izdeliya.id_izdeliya ,
                izdeliya.id_izdeliya , 
                cehovaya_nakladnaya.data_nakl, 
                cehovaya_nakladnaya.id_sklada
1
Tanya328
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 23
15.12.2016, 14:13  [ТС] 6
Вот ошибка
0
Миниатюры
Перевод кода для MySQL в код для MS SQL Server  
YuryK
1031 / 848 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
15.12.2016, 14:27 7
Лучший ответ Сообщение было отмечено Tanya328 как решение

Решение

izdeliya.nazvanie_izdeliya
по нему должно или группироваться или быть в агрегатной функции

В твоем случае можно и так и так
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT  
         izdeliya.id_izdeliya                                    AS id_izdeliya, 
         izdeliya.nazvanie_izdeliya                              AS nazvanie_izdeliya, 
         cehovaya_nakladnaya.data_nakl                           AS data_nakl, 
         cehovaya_nakladnaya.id_sklada                           AS id_sklada, 
         SUM(table_ceh_nakl.colichestvo_izdeliya)                  AS sumcehcolizd, 
         SUM(izdeliya.price * table_ceh_nakl.colichestvo_izdeliya) AS sumprice 
FROM     table_ceh_nakl 
JOIN     izdeliya ON table_ceh_nakl.id_izdeliya = izdeliya.id_izdeliya 
JOIN     cehovaya_nakladnaya ON cehovaya_nakladnaya.id_ceh_nakl = table_ceh_nakl.id_nakl 
WHERE    MONTH(cehovaya_nakladnaya.data_nakl) = 6 
GROUP BY izdeliya.id_izdeliya ,
                izdeliya.nazvanie_izdeliya, 
                cehovaya_nakladnaya.data_nakl, 
                cehovaya_nakladnaya.id_sklada
или

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
         izdeliya.id_izdeliya                                    AS id_izdeliya, 
         MAX(izdeliya.nazvanie_izdeliya)                              AS nazvanie_izdeliya, 
         cehovaya_nakladnaya.data_nakl                           AS data_nakl, 
         cehovaya_nakladnaya.id_sklada                           AS id_sklada, 
         SUM(table_ceh_nakl.colichestvo_izdeliya)                  AS sumcehcolizd, 
         SUM(izdeliya.price * table_ceh_nakl.colichestvo_izdeliya) AS sumprice 
FROM     table_ceh_nakl 
JOIN     izdeliya ON table_ceh_nakl.id_izdeliya = izdeliya.id_izdeliya 
JOIN     cehovaya_nakladnaya ON cehovaya_nakladnaya.id_ceh_nakl = table_ceh_nakl.id_nakl 
WHERE    MONTH(cehovaya_nakladnaya.data_nakl) = 6 
GROUP BY izdeliya.id_izdeliya ,
                cehovaya_nakladnaya.data_nakl, 
                cehovaya_nakladnaya.id_sklada
[/TSQL]
1
Tanya328
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 23
15.12.2016, 15:16  [ТС] 8
Нет результатов (
0
Миниатюры
Перевод кода для MySQL в код для MS SQL Server  
YuryK
1031 / 848 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
15.12.2016, 15:18 9
Лучший ответ Сообщение было отмечено Tanya328 как решение

Решение

в июне не было накладных - все были в отпуске
1
Tanya328
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 23
15.12.2016, 15:40  [ТС] 10
А можно и этот код отредактировать ? пожалуйста
SQL
1
SELECT izdeliya.nazvanie_izdeliya AS nazvanie_izdeliya,table_dogovor.id_izdeliya AS id_izdeliya,table_dogovor.id_sklada AS id_sklada,SUM(table_dogovor.colichestvo_izdeliya) AS sumDogColIzd,dogovor.Data_dogovora AS Data_dogovora,(izdeliya.price * table_dogovor.colichestvo_izdeliya) AS sumPrice FROM ((table_dogovor JOIN izdeliya ON((table_dogovor.id_izdeliya = izdeliya.id_izdeliya))) JOIN dogovor) WHERE ((dogovor.id_dogovora = table_dogovor.id_dogovora) AND (MONTH(dogovor.Data_dogovora) = 6)) GROUP BY table_dogovor.id_izdeliya
Вот задание..
По документам договор получить общее количество каждого выпущеного изделия по заданному складу в заданном месяце пожалуйста
0
Tanya328
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 23
15.12.2016, 15:53  [ТС] 11
Вот ошибка
0
Миниатюры
Перевод кода для MySQL в код для MS SQL Server  
YuryK
1031 / 848 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
15.12.2016, 17:48 12
и чего это ты тут накрутила?
T-SQL
1
2
3
4
5
6
7
8
9
FROM (
    (
      table_dogovor 
      JOIN izdeliya ON  (table_dogovor.id_izdeliya = izdeliya.id_izdeliya)
    ) 
    JOIN dogovor
  ) 
WHERE ((dogovor.id_dogovora = table_dogovor.id_dogovora) AND (MONTH(dogovor.Data_dogovora) = 6)) 
GROUP BY table_dogovor.id_izdeliya
все гораздо проще

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT 
  table_dogovor.id_izdeliya AS id_izdeliya,
  dogovor.id_dogovora, 
  MAX(dogovor.Data_dogovora) AS Data_dogovora,
  MAX(izdeliya.nazvanie_izdeliya) AS nazvanie_izdeliya,
  SUM(table_dogovor.colichestvo_izdeliya) AS sumDogColIzd,
  SUM(izdeliya.price * table_dogovor.colichestvo_izdeliya) AS sumPrice 
FROM 
  dogovor
  JOIN table_dogovor ON dogovor.id_dogovora = table_dogovor.id_dogovora
  JOIN izdeliya ON table_dogovor.id_izdeliya = izdeliya.id_izdeliya
WHERE 
  MONTH(dogovor.Data_dogovora) = 6 AND (izdeliya.id_sklada = [заданный склад]
GROUP 
  BY table_dogovor.id_izdeliya, dogovor.id_dogovora
Добавлено через 5 минут
в один день может быть только один договор? Почему в выборке достаточно только его даты, без ФИО клиента ?

Добавлено через 1 минуту
модет дата догоаора и группмпрвка по dogovor.id_dogovora лишние? в задании же не указано разбивать по договорам, сказано суммировать по изделиям

Добавлено через 9 минут
*может дата договора и группировка по
ну и настучал
1
Tanya328
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 23
15.12.2016, 21:29  [ТС] 13
Тут печалька
0
Миниатюры
Перевод кода для MySQL в код для MS SQL Server   Перевод кода для MySQL в код для MS SQL Server  
YuryK
1031 / 848 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
16.12.2016, 00:06 14
как раз тот случай, когда перед GROUP BY не хватает закрывающей скобки в WHERE. Я ведь выше предупреждал
1
Tanya328
0 / 0 / 0
Регистрация: 13.12.2016
Сообщений: 23
16.12.2016, 08:51  [ТС] 15
А теперь что не так?
0
Миниатюры
Перевод кода для MySQL в код для MS SQL Server  
pincet
1336 / 922 / 125
Регистрация: 23.07.2010
Сообщений: 5,039
16.12.2016, 10:01 16
вангую - [заданный склад] - параметр
в сиквеле это дело не так решается
0
YuryK
1031 / 848 / 337
Регистрация: 08.12.2016
Сообщений: 3,283
16.12.2016, 12:13 17
Цитата Сообщение от pincet Посмотреть сообщение
вангую - [заданный склад] - параметр
зачет!

как 6-ой месяц каким-то образом в запрос пробралась, так искомый склад должен
0
pincet
1336 / 922 / 125
Регистрация: 23.07.2010
Сообщений: 5,039
16.12.2016, 13:39 18
Цитата Сообщение от YuryK Посмотреть сообщение
зачет!
я свои зачеты как говорится "a long time ago"
0
16.12.2016, 13:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2016, 13:39

БД для Microsoft SQL Server 2012
Всем привет. Скачал Microsoft SQL Server 2012 для того чтобы потренироваться в...

Создание сервера для БД SQL Server 2012
С горем пополам установил Microsoft SQL Server Management Studio 2012, но ему...

Microsoft SQL Server 2000 для профессионалов
Очень желал бы купить книгу 'Microsoft SQL Server 2000 для профессионалов'......


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru