我对 SQL 及其关联有点迷茫。
我有两张 table “酒店”和 “房间” .
在我的 房间表我有一个名为 的字段"hotel_id" , “容量”和 “书”
在我的 酒店表我有一个字段 “姓名” .
我的 “书”字段是一个 bool 值,所以如果它是 “0” 表示它是免费的,如果是 “1”它被预订了。
我的主要目标是根据空闲房间显示酒店名称和空闲容量,如下所示:
姓名
COSTA DEL SOL
容量
35
(它是一个有两列的表格)
所以我写了这个开始:
SELECT * FROM room WHERE book = "0";
这给了我所有的免费房间。
然后我写了这个:
SELECT hotel_id, SUM(capacity) FROM room WHERE book = "0" GROUP BY hotel_id;
这给了我所有酒店的所有容量以及他们的 ID
然后我写道:
SELECT name, hotel_id FROM hotel INNER JOIN room ON hotel.id = room.hotel_id GROUP BY name;
这给了我酒店名称和他们的身份证。
所以结合的请求我有点迷茫总和 和 加入 .我不知道如何让它工作。
我试过这个,但没有解决:
SELECT name, hotel_id, sum(capacity) AS hotelcapacity FROM hotel
INNER JOIN room ON hotel.id = room.hotel_id GROUP BY hotelcapacity;
如果有人可以帮助我,将不胜感激。谢谢你。
最佳答案
您需要按酒店名称分组,而不是按容量分组。您还可以从查询中排除酒店 ID。
就像是:
SELECT name, SUM(capacity) AS hotelcapacity
FROM hotel
INNER JOIN room ON hotel.id = room.hotel_id
GROUP BY name;
如果您在查询中需要酒店 ID,那么您可以通过以下方式将其添加到组中:
SELECT name, hotel_id, SUM(capacity) AS hotelcapacity
FROM hotel
INNER JOIN room ON hotel.id = room.hotel_id
GROUP BY name, hotel_id;
关于sql - 基本 SQL SUM 和 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41535483/