我有两个表,结构如下:
房间清单:
-room (unique)
-totalDesks
用户列表:
-room (has duplicates)
-deskOwned
我需要一个 SQL 语句,它会输出以下内容:
room
totalDesks
desksUsed (COUNT(DISTINCT userlist.desk))
desksOpen (totalDesks-(COUNT(DISTINCT userlist.desk)))
到目前为止我有这个:
SELECT
DISTINCT roomList.room, userlist.room, roomList.totalDesks,
COUNT(DISTINCT userlist.desk) AS desksUsed,
roomlist.totalDesks - COUNT(DISTINCT userlist.desk) AS desksOpen
FROM
roomlist, userlist
WHERE
roomlist.room = userlist.room
问题是目前并非所有房间都有用户。如果我有房间 A、B、C 和 D,但只有 A、B 和 C 中的人的记录,则结果中不会包括房间 D——即使房间 D 总共有 5 个桌子,但没有一个被占用。
即使用户列表中没有该房间的记录,我如何才能获得仍然会在房间列表中为我提供房间结果的结果?