Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > sql запрос


Автор: MrDmitry 23.1.2014, 22:13
Здраствуйте помогите составить sql запрос

есть две таблицы

ID    ID_MACHINE    NAME    SURNAME    PATRONYMIC    ADRESS    BIRTHDAY    DOCUMENT    PHONE    ADVANCED_PHONE    

и

ID    NAME_MACHINE    NUMBER_MACHINE    TECH_SURV_DATE    COLOR


Две эти таблицы связаны между собой ключевыми полями id и id_machine


Мне нужно вывести сгрупированные записи с названием машин

Код

select m.id, m.name_machine, m.number_machine, m.color from "MACHINE_INFO" as m
left join "DRIVERS_INFO" d on d.id_machine=m.id 


Такой sql выдает мне результат

ID    NAME_MACHINE    NUMBER_MACHINE    COLOR
2    Нива            АА111А    Красная
3    Мерседес    ББ111Б1    Черный
3    Мерседес    ББ111Б1    Черный


То есть запись с id = 3 повторилась 2 раза, как понимаю для того чтобы запись не повторялась 2 раза нужно в моем sql запросе дописать group by m.id

Код

select m.id, m.name_machine, m.number_machine, m.color from "MACHINE_INFO" as m
left join "DRIVERS_INFO" d on d.id_machine=m.id group by m.id



Но таким образом я получаю ошибку 

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).

SQL Error (code = -104):
Invalid token.

и не понимаю почему ((((

Автор: Akina 24.1.2014, 07:24
Цитата(MrDmitry @  23.1.2014,  23:13 Найти цитируемый пост)
для того чтобы запись не повторялась 2 раза нужно в моем sql запросе

SELECT DISTINCT ...

Цитата(MrDmitry @  23.1.2014,  23:13 Найти цитируемый пост)
не понимаю почему 

Все поля выходного набора (ВСЕ!!!), не включённые в групповые функции, обязаны быть указаны в GROUP BY. Это тебе не MySQL...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)