如果数据没有值,则在查询中显示零

k5ifujac  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(264)

这个问题在这里已经有答案了

返回输入值的默认结果(2个答案)
两年前关门了。
我想在我的数据库中显示诊所名称和我的总收入,条件是日期在年和月内。
我得到的是:

SELECT tbl_clinics.clinic_name, COALESCE(SUM(tbl_bill.bill_amt),0) AS clinic_tot FROM tbl_clinics
LEFT OUTER JOIN tbl_check_up ON tbl_clinics.clinic_id = tbl_check_up.clinic_id 
LEFT OUTER JOIN tbl_bill ON tbl_check_up.bill_id = tbl_bill.bill_id 
WHERE MONTH(tbl_bill.date_billed) = "01" 
    AND YEAR(tbl_bill.date_billed) = "2018" 
    AND tbl_clinics.user_id = "2-2017" 
GROUP BY tbl_clinics.clinic_name

现在,只有当我有从数据库获取的数据时,我的查询才会返回正确的结果。现在我想要这样的东西:例如我改变日期 YEAR(tbl_bill.date_billed) = "2019" 然后我想这样输出:

_________________________________
|   Clinic_name |  clinic_tot   |
---------------------------------
|  Clinic 1     |     0         |
---------------------------------
8ulbf1ek

8ulbf1ek1#

你的 WHERE 子句将外部联接转换为内部联接。您需要将除第一个表以外的所有表上的条件移到 ON 条款:

SELECT c.clinic_name, COALESCE(SUM(b.bill_amt), 0) AS clinic_tot 
FROM tbl_clinics c LEFT OUTER JOIN
     tbl_check_up cu
     ON c.clinic_id = cu.clinic_id LEFT OUTER JOIN
     tbl_bill b
     ON cu.bill_id = b.bill_id AND
        MONTH(b.date_billed) = 1 AND
        YEAR(b.date_billed) = 2018 
WHERE c.user_id = '2-2017'
GROUP BY c.clinic_name

相关问题