使用mySQL在一个查询中从两个表中选择并计数

使用mySQL在一个查询中从两个表中选择并计数,mysql,Mysql,以下是我的表格结构: ___房间 |--------|-------------|------------| | ROO_Id | ROO_HotelId | ROO_Status | |--------|-------------|------------| | 1 | 1 | active | | 2 | 1 | active | | 3 | 1 | inactive | |----

以下是我的表格结构:

___房间

|--------|-------------|------------|
| ROO_Id | ROO_HotelId | ROO_Status |
|--------|-------------|------------|
|      1 |           1 |     active |
|      2 |           1 |     active |
|      3 |           1 |   inactive |
|--------|-------------|------------|
___订阅

|-------------|-----------|
| SUB_HotelId | SUB_Limit |
|-------------|-----------|
|           1 |        24 |
|-------------|-----------|

我想选择
SUB_Limit
并计算房间数量(仅活动房间)

因此,查询应返回如下内容:

|-----------|------------|
| SUB_Limit | ROO_Number |
|-----------|------------|
|        24 |          2 |
|-----------|------------|
为什么这个查询没有返回我想要的输出

SELECT 
    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 |
|-----------|------------|
|      NULL |          0 |
|-----------|------------|
请尝试以下查询:

SELECT s.sub_limit, count(ROO_Id)
FROM ___Rooms r
INNER JOIN ___Subscription s ON (s.SUB_HotelId = r.ROO_HotelId)
WHERE s.SUB_HotelId = 1
and r.ROO_STATUS = 'active'

您忘记了分组依据

SELECT 
    S.SUB_Limit, 
    COUNT(*) AS ROO_Number
FROM ___Rooms AS R
RIGHT JOIN ___Subscriptions AS S
    ON R.ROO_HotelId = S.SUB_HotelId
WHERE R.ROO_Status = 'active'
    AND S.SUB_HotelId = 1        
GROUP BY ROO_HotelId

UPD:
分组依据
是不必要的,因为我们只需要所有行的数量。另外,右连接不能用于您的特定MySQL引擎(与左连接或内部连接不同),因此如果我没有弄错的话,您最好使用联合构造来捕获与主表的零交点。

请尝试下面的查询一次

SELECT 
   SUB_Limit, COUNT(ROO_Id) AS ROO_Number FROM 
   ___rooms r,___subscriptions s 
    WHERE r.ROO_HotelId=s.SUB_HotelId AND ROO_Status='active'

与我的查询相同。它现在不返回任何行。注意:有时,我在
中没有房间。所以,也许JOIN?有问题,您的问题来自其他地方。这很可能是一个错误。