簡體   English   中英

按另一列的 min 選擇組中的行

[英]Select row in group by min of another column

嘿,你能幫我做一個簡單的 sql 查詢嗎?

酒店

id | name | country | rating
1    Bali   bg        4.5
2    Beach  uk        4.0
3    Blue   sk        3.7

旅游

id | id_hotel | price  
1    2          250
2    2          270
3    1          250
4    1          300
5    3          250

我想要這樣的東西

SELECT t.* FROM tour t LEFT JOIN hotel h ON  t.id_hotel = h.id
WHERE h.country = uk GROUP BY h.id ORDER BY t.price

所以我想以最低的旅游價格為每家酒店安排一排。 最好使用Doctrine 2 queryBuilder。

感謝幫助。

嘿也許我有解決方案

SELECT MIN(tour.id), hotel.* FROM `tour` INNER JOIN (
SELECT MIN(t.final_price) as final_price, t.id_hotel FROM tour t GROUP 
BY t.id_hotel) ht 
ON tour.id_hotel = ht.id_hotel AND tour.final_price = 
ht.final_price 
LEFT JOIN hotel ON hotel.id = tour.id_hotel GROUP BY tour.id_hotel

使用 group by 和 order by 來完成你的結果,試試下面的查詢

select hotel.name,Tour.id,Tour.price,Hotel.rating from Hotel inner join Tour on Tour.id_hotel = Hotel.id group where hotel.country = 'uk' group by Tour.id_hotel order by Tour.price asc

讓我知道它是否有幫助

[編輯] 此查詢應該適用於您

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM