我的sql知识不是那么好,经过2个小时的头脑风暴,我决定在这里问我的朋友们。
这是我的问题,我正在开发一个旅游网站。有地区和价格表。结构基本上是这样的。
regions region_contents prices
------- ---------------- --------
regionId regionId priceId
regionName hotelId hotelId
someMoreFields someMoreFields price
beginDate
endDate
someMoreFields
我想要的数据是
+-----------------+-------------+-------------------------+
| hotelId | hotelName | min price for this Id |
+-----------------+-------------+-------------------------+
| hotelId | hotelName | min price for this Id |
+-----------------+-------------+-------------------------+
| hotelId | hotelName | min price for this Id |
+-----------------+-------------+-------------------------+
| hotelId | hotelName | min price for this Id |
+-----------------+-------------+-------------------------+
我查询特定地区的所有酒店,按每家酒店的最低价格订购,每家酒店的最终价格日期应晚于NOW()。
提前致谢。 也是语法不好的人。
答案 0 :(得分:1)
此查询应该是您所需要的:
SELECT hotel_id, hotel_name, MIN(price)
FROM region
JOIN region_contents
ON regionName = <reqdname> AND region.regionID = region_contents.regionID
JOIN prices
ON region_contents.hotel_id = prices_hotel_id
WHERE end_date > NOW()
GROUP BY hotel_id
ORDER BY MIN(price)
答案 1 :(得分:0)
我认为您需要所有表格中的数据,JOIN
后跟GROUP BY
来使用MIN()
函数:
SELECT rc.hotelId, rc.hotelName, MIN(p.price) FROM regions r
LEFT JOIN region_contents rc ON r.regionId = rc.regionId
LEFT JOIN prices p ON p.hotelId = rc.hotelID
GROUP BY rc.hotelId
答案 2 :(得分:0)
也许我错过了一些东西,但这似乎很简单......
SELECT
hotelId,
hotelName,
MIN(price)
FROM
region_contents
INNER JOIN
prices
ON
region_contents.hotel_id = prices.hotel_id
GROUP BY
hotelId,
hotelName
ORDER BY
MIN(price)