在mySQL中对同一查询进行计数和选择

在mySQL中对同一查询进行计数和选择,mysql,Mysql,从我的两个表中,我想选择SUB_Limit并仅计算活动表中的房间数 因此,查询应返回如下内容: |-----------|------------|-------------| | SUB_Limit | ROO_Number | ROO_HotelId | |-----------|------------|-------------| | 10 | 0 | 1 | | 15 | 3 | 2

从我的两个表中,我想选择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 |
|-----------|------------|
所以我没有没有没有房间的订阅

这是我需要帮助的地方


提前感谢。

下面的查询将为您提供所需的结果

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的情况。我就是这么做的