在 3 个表上左连接?
Left join on 3 tables?
我必须在 3 个表上使用 LEFT JOIN
:UNITS
、ROOMS_CHECK_IN
和 COMMENTS
。基本上我想显示 UNITS
以及每个单位的房间数和评论数。但是当我 运行 时,我得到了相同的 4 位数字,用于房间登记和评论计数。如果我用单个左连接将 2 个查询分开,它工作正常。
下面是查询:
SELECT u.ID,
u.unit_name,
count(c.checkin_status) as total_chekin ,
count(com.ID) as total_comment ,
h.hospital_name
FROM HOSPITALS h, UNITS u
LEFT OUTER JOIN ROOMS_CHECK_IN c ON c.unit_id = u.ID AND c.room_status=0
LEFT OUTER JOIN COMMENTS com ON com.unit_id = u.ID
WHERE h.ID = u.hospital_id AND u.hospital_id=3
GROUP BY u.ID;
请帮忙。
从不 在 FROM
子句中使用逗号。 始终 使用明确的适当 JOIN
上下文。
然后,您可能需要 count(distinct)
(或在连接前聚合):
SELECT u.ID, u.unit_name,
count(distinct c.checkin_status) as total_chekin,
count(distinct com.ID) as total_comment,
h.hospital_name
FROM HOSPITALS h JOIN
UNITS u
ON h.ID = u.hospital_id LEFT OUTER JOIN
ROOMS_CHECK_IN c
ON c.unit_id = u.ID AND c.room_status = 0 LEFT OUTER JOIN
COMMENTS com
ON com.unit_id = u.ID
WHERE u.hospital_id = 3
GROUP BY u.ID, u.unit_name, h.hospital_name;
我必须在 3 个表上使用 LEFT JOIN
:UNITS
、ROOMS_CHECK_IN
和 COMMENTS
。基本上我想显示 UNITS
以及每个单位的房间数和评论数。但是当我 运行 时,我得到了相同的 4 位数字,用于房间登记和评论计数。如果我用单个左连接将 2 个查询分开,它工作正常。
下面是查询:
SELECT u.ID,
u.unit_name,
count(c.checkin_status) as total_chekin ,
count(com.ID) as total_comment ,
h.hospital_name
FROM HOSPITALS h, UNITS u
LEFT OUTER JOIN ROOMS_CHECK_IN c ON c.unit_id = u.ID AND c.room_status=0
LEFT OUTER JOIN COMMENTS com ON com.unit_id = u.ID
WHERE h.ID = u.hospital_id AND u.hospital_id=3
GROUP BY u.ID;
请帮忙。
从不 在 FROM
子句中使用逗号。 始终 使用明确的适当 JOIN
上下文。
然后,您可能需要 count(distinct)
(或在连接前聚合):
SELECT u.ID, u.unit_name,
count(distinct c.checkin_status) as total_chekin,
count(distinct com.ID) as total_comment,
h.hospital_name
FROM HOSPITALS h JOIN
UNITS u
ON h.ID = u.hospital_id LEFT OUTER JOIN
ROOMS_CHECK_IN c
ON c.unit_id = u.ID AND c.room_status = 0 LEFT OUTER JOIN
COMMENTS com
ON com.unit_id = u.ID
WHERE u.hospital_id = 3
GROUP BY u.ID, u.unit_name, h.hospital_name;