SELECT
p.price,
h.name AS hotel_name
FROM
prices p
LEFT JOIN hotels h ON p.hotel_id = h.id
WHERE
p.city = 'boedapest'
AND p.hotel_id IS NOT NULL
GROUP BY p.name
ORDER BY p.price ASC
РЕЗУЛЬТАТ:
26 Эбен Hotel Budapest
27 Веритас
28 Ibis Budapest Heroes Square
29 Hunguest Hotel Griff
30 Hotel Thomas
31 NH Budapest
31 Rubin Wellness and Conference Hotel
32 Benczur Отель
33 Atlantic
33 Delibab Hotel Budapestстранно MySQL GROUP BY/ORDER BY поведения
Точно такой же результат с GROUP BY закомментирована:
24 Gerand Отель Ventura
25 Hunguest Hotel Platanus
26 Boulevard City Guesthouse
26 Tulip Inn Millennium Budapest
26 Эбен отель Будапешт
27 Веритас
27 Барош
28 Hotel Thomas
28 Hunguest Hotel Griff
28 Ibis Budapest Heroes Square
В принципе, я хотел бы GROUP по имени, но сохраните ORDER BY. Поскольку 24 меньше 26, я ожидаю, что он появится раньше, чем 26. Также имейте в виду, что я показываю только первые 10 результатов, чтобы оставить сообщение коротким.
Я использую: SELECT VERSION() -> 5.1.37
Почему вы используете 'GROUP BY', если вы не используете какие-либо агрегированные функции? –
Так что я могу GROUP_CONCAT цены. Например: GROUP_CONCAT (CONCAT (транспорт, '||', цена, '||', p.url) SEPARATOR '(|)') AS цены Для простоты я пропустил GROUP_CONCAT. –