在我的两个表格中,我想选择SUB_Limit
并计算房间数(仅活动房间)。
因此查询应返回如下内容:
|-----------|------------|-------------|
| SUB_Limit | ROO_Number | ROO_HotelId |
|-----------|------------|-------------|
| 10 | 0 | 1 |
| 15 | 3 | 2 |
| 5 | 2 | 3 |
| 25 | 0 | 4 |
|-----------|------------|-------------|
为什么这个查询没有返回我想要的输出?
SELECT
ROO_HotelId,
SUB_Limit,
COUNT(ROO_Id) AS ROO_Number
FROM ___Rooms
LEFT JOIN ___Subscriptions
ON ___Rooms.ROO_HotelId = ___Subscriptions.SUB_HotelId
WHERE ROO_Status = 'active'
AND SUB_HotelId = 1
AND ROO_HotelId = 1
实际上,它给了我
|-----------|------------|
| SUB_Limit | ROO_Number |
|-----------|------------|
| 15 | 3 |
| 5 | 2 |
|-----------|------------|
所以我没有___Subscriptions
没有房间。
在SQL Fiddle寻求帮助。
谢谢。
答案 0 :(得分:1)
下面的查询为您提供所需的结果。
SELECT
SUB_HotelId,
SUB_Limit,
COUNT(ROO_Id) AS ROO_Number
FROM ___Subscriptions
LEFT JOIN ___Rooms ON
___Rooms.ROO_HotelId = ___Subscriptions.SUB_HotelId
WHERE ROO_Status = 'active' or ROO_Status is null
GROUP BY SUB_HotelId
您需要检查ROO_Status ='active'或NULL,因为如果订阅未链接到房间,则ROO_Status将没有任何值。另外,您还需要对SUB_HotelId进行分组,因为如果没有空间可以加入订阅,则ROO_HotelId也将为null。
答案 1 :(得分:0)
这是因为未在您的结果中合并ROO_HotelId 选择 SUB_Limit, COUNT(ROO_Id)AS ROO_Number,ROO_HotelId 从___间客房 右加入___订阅 开启___ Rooms.ROO_HotelId = ___ Subscriptions.SUB_HotelId ROO_Status ='活动' GROUP BY ROO_HotelId