опять GROUP BY

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
LIS
Сообщения: 2
Зарегистрирован: 27 мар 2005, 17:34

опять GROUP BY

Сообщение LIS » 27 мар 2005, 20:30

Вот запрос
SELECT
TBL_COUNTRY.N_COUNTRY_ID,
TBL_COUNTRY.T_COUNTRY_NAME
FROM
tbl_country,tbl_country_sprav,tbl_tour
WHERE
tbl_country_sprav.n_country_id = tbl_country.n_country_id
AND tbl_country_sprav.n_tour_id = tbl_tour.n_tour_id
AND TBL_TOUR.n_active = 1
GROUP BY
TBL_COUNTRY.N_COUNTRY_ID

это работает и в MySQL и в MS SQL

Firebird 1.5 ругается:
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).

уже ничего не понимаю.
или это всетаки баг?

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 27 мар 2005, 23:57

добавь в группировку TBL_COUNTRY.T_COUNTRY_NAME и будет тебе щастье на всех перечисленных серверах. Вместо того, чтобы надеятся на интеллект оптимизатора, который догадается, что N_COUNTRY_ID - первичный ключ, проще писать запросы сразу правильно.

LIS
Сообщения: 2
Зарегистрирован: 27 мар 2005, 17:34

Сообщение LIS » 28 мар 2005, 00:25

добавь в группировку TBL_COUNTRY.T_COUNTRY_NAME и будет тебе щастье на всех перечисленных серверах. Вместо того, чтобы надеятся на интеллект оптимизатора, который догадается, что N_COUNTRY_ID - первичный ключ, проще писать запросы сразу правильно.
Однако работает
СПАСИБО!

Veterok
Сообщения: 10
Зарегистрирован: 30 мар 2005, 10:47

Сообщение Veterok » 01 апр 2005, 13:21

LIS писал(а):
добавь в группировку TBL_COUNTRY.T_COUNTRY_NAME и будет тебе щастье на всех перечисленных серверах. Вместо того, чтобы надеятся на интеллект оптимизатора, который догадается, что N_COUNTRY_ID - первичный ключ, проще писать запросы сразу правильно.
Однако работает
СПАСИБО!
Однако зачем GROUP BY, когда DISTINCT логичнее

Ответить