sql - 基本 SQL SUM 和 JOIN

标签 sql sql-server request sum

我对 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/

相关文章:

sql - GUID 的 SCOPE_IDENTITY() 吗?

sql - 我如何在 Postgres 中优化这个 SQL 查询?

mysql - 将Mysql数据库迁移到Mssql

javascript - 如何在 angularjs $http 请求中获取请求 url

javascript - 下载文件时 Node 渲染进程消失

sql - 可能与 Cursor/Join 有关的问题

mysql - SQL:包含 where 子句的计数语句的总和

c# - EF6 重试过程为 SqlQuery 命令抛出 "The SqlParameter is already contained by another SqlParameterCollection"

sql - TSQL:是否有办法限制返回的行并计算没有限制的返回总数(不将其添加到每一行)?

python - 如何避免/防止 Python 中的请求出现 Max Redirects 错误?