在 3 个表上左连接?

Left join on 3 tables?

我必须在 3 个表上使用 LEFT JOINUNITSROOMS_CHECK_INCOMMENTS。基本上我想显示 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;