2017-04-17 16 views
0

どのように私は私のtbl_clinics.clinic_nameでグループ化したようなものです。今私のクエリはどうなりますか?私はこれらのようなものを出力したいように、なぜそれが、それは、私のゼロ値を示していないされています。ここではクエリで空のmysqlクエリが表示されます

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など不要だと思い、常に、NULLではない、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 
関連する問題