Mysql 如果连接表don';不包含行
以下是我的表格结构: ___房间Mysql 如果连接表don';不包含行,mysql,join,Mysql,Join,以下是我的表格结构: ___房间 |--------|-------------| | ROO_Id | ROO_HotelId | |--------|-------------| | 1 | ABC123 | | 2 | ABC123 | | 3 | ABC123 | |--------|-------------| ___订阅 |-------------|-----------| | SUB_HotelId | SUB_Lim
|--------|-------------|
| ROO_Id | ROO_HotelId |
|--------|-------------|
| 1 | ABC123 |
| 2 | ABC123 |
| 3 | ABC123 |
|--------|-------------|
___订阅
|-------------|-----------|
| SUB_HotelId | SUB_Limit |
|-------------|-----------|
| ABC123 | 19 |
| XYZ987 | 23 |
|-------------|-----------|
当\uuuuuuuuuuuu Rooms
具有所需HotelId
的行时,此查询工作
SELECT
COUNT(ROO_Id) AS SUB_RoomNumber,
SUB_Limit
FROM ___Subscriptions
LEFT JOIN ___Rooms
ON ___Rooms.ROO_HotelId = ___Subscriptions.SUB_HotelId
WHERE SUB_HotelId = 'ABC123'
AND ROO_HotelId = 'ABC123'
|----------------|-----------|
| SUB_RoomNumber | SUB_Limit |
|----------------|-----------|
| 3 | 19 |
|----------------|-----------|
对于酒店XYZ987
,此酒店在\uuuuuuuuuuuuuuuuuuuuuuurooms
中没有实际房间,并且子限额的查询返回空值
:
|----------------|-----------|
| SUB_RoomNumber | SUB_Limit |
|----------------|-----------|
| 0 | NULL |
|----------------|-----------|
为什么请?不要在Where条件内检查
ROO_HotelId='XYZ987'
。如果\uuuu Rooms
表中没有匹配的ROO\u HotelId
,则不会显示任何数据(如果使用Where)
基本上,一旦在HotelId上完成了表之间的连接,就只需要为其中一个表设置Where条件。在内部联接的情况下,可以使用任意一个表。但是,在左联接的情况下,需要使用左表
使用以下命令:
SELECT
COUNT(ROO_Id) AS SUB_RoomNumber,
SUB_Limit
FROM ___Subscriptions
LEFT JOIN ___Rooms
ON ___Rooms.ROO_HotelId = ___Subscriptions.SUB_HotelId
WHERE SUB_HotelId = 'XYZ987'