【问题标题】:displaying zero in query if data has no value [duplicate]如果数据没有值,则在查询中显示零 [重复]
【发布时间】:2018-01-18 03:04:10
【问题描述】:

我想在我的数据库中显示诊所名称和我的总收入,条件是年份和月份内的日期。

这是我得到的:

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         |
---------------------------------

【问题讨论】:

    标签: mysql sql datetime


    【解决方案1】:

    您的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
    

    【讨论】:

    • 谢谢我试试这个
    猜你喜欢
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多