在mySQL中对同一查询进行计数和选择
从我的两个表中,我想选择SUB_Limit并仅计算活动表中的房间数 因此,查询应返回如下内容:在mySQL中对同一查询进行计数和选择,mysql,Mysql,从我的两个表中,我想选择SUB_Limit并仅计算活动表中的房间数 因此,查询应返回如下内容: |-----------|------------|-------------| | SUB_Limit | ROO_Number | ROO_HotelId | |-----------|------------|-------------| | 10 | 0 | 1 | | 15 | 3 | 2
|-----------|------------|-------------|
| 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 |
|-----------|------------|
所以我没有没有没有房间的订阅
这是我需要帮助的地方
提前感谢。下面的查询将为您提供所需的结果
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也将为空
链接到fiddle:这基本上是因为房间的桌子上没有hotelID1@JavierLarroulet是的,这里是这样的。但我怎么处理呢?谢谢。您可以执行与房间右连接订阅不同的左连接房间订阅,并处理连接最右侧通过代码返回null的情况。我就是这么做的