2017-04-17 45 views
0

我如何查询我想要的输出,像我这样通过我的tbl_clinics.clinic_name进行分组。现在我的查询发生了什么?为什么它是,它并没有显示我的零个值,比如我想要的东西输出这样的:mysql query在查询中显示为空

clinic name | total_check 
Clinic 1 | 4 
Clinic 2 | 0 
Clinic 3 | 0 
Clinic 4 | 0 

这里是我的查询:

SELECT 
tbl_clinics.clinic_name, 
COALESCE(COUNT(tbl_check_up.check_up_id),0) AS total_check 
FROM 
tbl_clinics 
LEFT OUTER JOIN tbl_check_up ON tbl_clinics.clinic_id = tbl_check_up.clinic_id 
WHERE tbl_clinics.user_id = "102" AND MONTH(tbl_check_up.check_up_date) = "02" 
GROUP BY tbl_clinics.clinic_name 

和我所得到的是只喜欢这些:

clinic_name | total_check 
    Clinic 1  |  4 

为什么它不显示我的其他诊所? ..我怎么操纵这些? 。请帮助我从我想要的内容中获得正确的输出,并向我解释为什么我的输出不能很好地完成我想要的输出。

回答

1

WHERE子句将决定输出哪些行。如果你想输出表“tbl_clinics”内的所有记录,试试这个:

SELECT tbl_clinics.clinic_name, 
     Count(tbl_check_up.check_up_id) AS total_check 
FROM tbl_clinics 
     LEFT JOIN tbl_check_up 
       ON tbl_clinics.clinic_id = tbl_check_up.clinic_id 
       AND tbl_clinics.user_id = "102" 
       AND Month(tbl_check_up.check_up_date) = "02" 
GROUP BY tbl_clinics.clinic_name 

而且,我认为,COALESCE()在COUNT()是不必要的,因为COUNT()将始终返回0,不为空,当没有行遇到。

0

你可以尝试

SELECT tbl_clinics.clinic_name, 
     COALESCE(COUNT(tbl_check_up.check_up_id), 0) AS total_check 
FROM tbl_clinics 
     LEFT OUTER JOIN tbl_check_up 
        ON tbl_clinics.clinic_id = tbl_check_up.clinic_id 
WHERE tbl_clinics.user_id = "102" 
     AND (tbl_check_up.check_up_date IS NULL 
       OR MONTH(tbl_check_up.check_up_date) = "02") 
GROUP BY tbl_clinics.clinic_name