проблемы с group by

проблемы с group by

если писать вот так
select t1.cityid,count(t1.cityid),t2.en_name from public.cities as t2 LEFT JOIN hotel.hotel_tour as t1 ON t1.cityid=t2.id GROUP BY t1.cityidHAVING count(t1.cityid)>0

то выдает ошибку ERROR: column t2.en_city does not exist


а если
select t2.en_name,t1.cityid,count(t1.cityid) from public.cities as t2 LEFT JOIN hotel.hotel_tour as t1 ON t1.cityid=t2.id GROUP BY t1.cityid,t2.en_name HAVING count(t1.cityid)>0

то работает
Сосответственно у меня вопрос по этой теме... то ли я плохо знаю стандарт ,то ли он работате не по стандарту ..но получается чтобы вывести название столбцов нужно объявить их в group by
хотя вот в мускуле первая конструкция работает

помогите люди ,я запутался
 

YRusinov

Филин Ух
У тебя отсутвует пробел перед HAVING в первом запросе, также откуда взялась колонка t2.en_city ?
 
Originally posted by YRusinov
У тебя отсутвует пробел перед HAVING в первом запросе, также откуда взялась колонка t2.en_city ?
Пробел в оригинале присутствует - описался !

А про t2.en_city не совсем понял !
В тиблице есть такая колонка
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Re: проблемы с group by

Автор оригинала: [email protected]
если писать вот так
select t1.cityid,count(t1.cityid),t2.en_name from public.cities as t2 LEFT JOIN hotel.hotel_tour as t1 ON t1.cityid=t2.id GROUP BY t1.cityidHAVING count(t1.cityid)>0

то выдает ошибку ERROR: column t2.en_city does not exist
никакого поля en_city в запросе нет, да и с пробелом ты описался . Давай так: либо ты копируешь сюда реальный запрос и реальное сообщение об ошибке, либо я закрываю нахрен эту тему, так как никакого желания из тебя информацию вытягивать нету.
 
Прошу прощения за мою растерянность ,устал к вечеру

Вот реальный запрос
select t1.cityid,count(t1.cityid),t2.en_name from public.cities as t2 LEFT JOIN hotel.hotel_tour as t1 ON t1.cityid=t2.id GROUP BY t1.cityid HAVING count(t1.cityid)>0

Вот реальная ошибка
то выдает ошибку ERROR: column t2.en_name does not exist


Но я уже разобрался ,как я понял ,надо просто в group перечислить столбцы ,которые хочешь вывести

Или лучше вообще это делать через вложенные запросы ?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: [email protected]
Но я уже разобрался ,как я понял ,надо просто в group перечислить столбцы ,которые хочешь вывести
Абсолютно верно. Если у тебя в списке есть поля, которые не сгруппированы и по которым не делается агрегатная функция, то совершенно непонятно --- какое именно значение из этого поля ты хочешь увидеть.

По стандарту здесь как раз должна быть ошибка, а мыскль, как обычно, на стандарт чихает.

Или лучше вообще это делать через вложенные запросы ?
Тоже вариант, иногда читаемость очень хорошо повышающий.
 
Сверху