Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Перевод запроса из MySQL в запрос Firebird / 9 сообщений из 9, страница 1 из 1
20.02.2015, 17:45
    #38885306
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод запроса из MySQL в запрос Firebird
есть запрос MySQL:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT pr_contr.nprot, pr_contr.datap, spr_vid.vid,
pr_poruch.npor, pr_poruch.text, pr_poruch.srok,
GROUP_CONCAT(IF(dataf,CONCAT(spr_otv.fio," (выполнено: ",DATE_FORMAT(pr_otv.dataf,"%d.%m.%Y"),")"),spr_otv.fio) ORDER BY spr_otv.fio ASC SEPARATOR "; ") AS otv
FROM pr_contr
INNER JOIN spr_vid ON pr_contr.vid = spr_vid.id
RIGHT OUTER JOIN pr_poruch ON pr_poruch.id_prot = pr_contr.id
RIGHT OUTER JOIN pr_otv ON pr_otv.id_poruch = pr_poruch.id
INNER JOIN spr_otv ON pr_otv.id_otv = spr_otv.id
WHERE pr_contr.id = 1
GROUP BY pr_poruch.npor
ORDER BY pr_poruch.npor



его нужно перевести под Firebird. Помогите, плз!

------------------------------
С уважением, StasK
...
Рейтинг: 0 / 0
20.02.2015, 17:52
    #38885316
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод запроса из MySQL в запрос Firebird
Hello, Stask!
You wrote on 20 февраля 2015 г. 17:53:19:

Stask> его нужно перевести под Firebird. Помогите, плз!
что именно не получилось?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.02.2015, 17:56
    #38885317
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод запроса из MySQL в запрос Firebird
StasK,

покажи как пытался записать в FB. Двойные кавычки замени на одинарные. Вместо дурацкого CONCAT есть нормальная операция конкатенации строк ||. Аналог GROUP_CONCAT будет LIST, за исключением того что в LIST нельзя задать порядок, но это обходится DT или CTE.
...
Рейтинг: 0 / 0
20.02.2015, 17:59
    #38885323
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод запроса из MySQL в запрос Firebird
попробовал так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT pr_contr.nprot, pr_contr.datap, spr_vid.vid,
pr_poruch.npor, pr_poruch.text, pr_poruch.srok,
LIST(IIF(pr_otv.dataf IS NOT NULL,(spr_otv.fio || ' (выполнено: ' || CAST(lpad(EXTRACT(DAY FROM pr_otv.dataf),2,'0') AS varchar(2)) || '.' || CAST(lpad(EXTRACT(MONTH FROM pr_otv.dataf),2,'0') AS varchar(2)) || '.' || EXTRACT(YEAR FROM pr_otv.dataf) || ')'), spr_otv.fio), '; ') AS otv
FROM pr_contr
INNER JOIN spr_vid ON pr_contr.vid = spr_vid.id
RIGHT OUTER JOIN pr_poruch ON pr_poruch.id_prot = pr_contr.id
RIGHT OUTER JOIN pr_otv ON pr_otv.id_poruch = pr_poruch.id
INNER JOIN spr_otv ON pr_otv.id_otv = spr_otv.id
WHERE pr_contr.id = 1
GROUP BY pr_poruch.npor
ORDER BY pr_poruch.npor



ошибка:

Код: sql
1.
2.
3.
4.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
...
Рейтинг: 0 / 0
20.02.2015, 18:05
    #38885324
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод запроса из MySQL в запрос Firebird
невзлетит. группировка не по всем полям SELECT
...
Рейтинг: 0 / 0
20.02.2015, 18:07
    #38885325
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод запроса из MySQL в запрос Firebird
StasK,

Firebird не выполняет кривые запросы. Все поля необвёрнутые в агрегатные функции должны быть в GROUP BY
...
Рейтинг: 0 / 0
20.02.2015, 18:09
    #38885327
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод запроса из MySQL в запрос Firebird
добавил:

Код: sql
1.
2.
GROUP BY pr_poruch.npor, pr_contr.datap, spr_vid.vid, pr_poruch.npor, pr_poruch.text, pr_poruch.srok
ORDER BY pr_poruch.npor



ошибка та же...
...
Рейтинг: 0 / 0
20.02.2015, 18:15
    #38885329
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод запроса из MySQL в запрос Firebird
StasKдобавил:

Код: sql
1.
2.
GROUP BY pr_poruch.npor, pr_contr.datap, spr_vid.vid, pr_poruch.npor, pr_poruch.text, pr_poruch.srok
ORDER BY pr_poruch.npor



ошибка та же...

GROUP BY pr_poruch.nprot, pr_contr.datap, spr_vid.vid, pr_poruch.npor, pr_poruch.text, pr_poruch.srok
ORDER BY pr_poruch.npor
...
Рейтинг: 0 / 0
20.02.2015, 18:17
    #38885330
StasK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перевод запроса из MySQL в запрос Firebird
Благодарю! А слона-то я и не заметил...
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Перевод запроса из MySQL в запрос Firebird / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]