包括 COUNT() = 0 的结果

Include results where COUNT() = 0

到 select 带有计数的 table 字段。那部分正在工作。我还需要包括计数为 0

的结果

这是我试过的

SELECT mallname, COUNT( * ) AS Count
FROM `malls`
INNER JOIN Mal_Client_Relationship ON Mal_Client_Relationship.m_Id = malls.m_Id
INNER JOIN clients ON Mal_Client_Relationship.id_user = clients.id_user
INNER JOIN dates ON dates.date_id = Mal_Client_Relationship.date_id
WHERE confirmcode = 'y' && EndDate >= CURRENT_DATE( ) || HAVING count(*) = 0
GROUP BY `mallname`
ORDER BY `mallname` 

SELECT mallname, COUNT( * ) AS Count
FROM `malls`
INNER JOIN Mal_Client_Relationship ON Mal_Client_Relationship.m_Id = malls.m_Id
INNER JOIN clients ON Mal_Client_Relationship.id_user = clients.id_user
INNER JOIN dates ON dates.date_id = Mal_Client_Relationship.date_id
WHERE confirmcode = 'y' && EndDate >= CURRENT_DATE( ) || count(*) = 0
GROUP BY `mallname`
ORDER BY `mallname` 

SELECT mallname, COUNT( * ) AS Count
FROM `malls`
INNER JOIN Mal_Client_Relationship ON Mal_Client_Relationship.m_Id = malls.m_Id
INNER JOIN clients ON Mal_Client_Relationship.id_user = clients.id_user
INNER JOIN dates ON dates.date_id = Mal_Client_Relationship.date_id
WHERE confirmcode = 'y' && EndDate >= CURRENT_DATE( ) || count(mallname) = 0
GROUP BY `mallname`
ORDER BY `mallname` 

阐明其背后的逻辑。当计数达到 60(60 个客户)时,我需要禁用 mallname。我在 php 中这样做,这是有效的。但我需要包含计数为 0 的 mallname(这意味着该商场还没有客户 link。

希望一切都有意义...

您面临的问题是某些组(商城名称)在计数为零的情况下被删除。这个问题的一种解决方案是先select所有商城名称,然后LEFT JOIN这个结果到每个商城名称分组得到的结果。

SELECT DISTINCT m.mallname, COALESCE(t.Count, 0)
FROM `malls` m LEFT JOIN
(
    SELECT mallname, COUNT( * ) AS Count
    FROM `malls`
    INNER JOIN Mal_Client_Relationship ON Mal_Client_Relationship.m_Id = malls.m_Id
    INNER JOIN clients ON Mal_Client_Relationship.id_user = clients.id_user
    INNER JOIN dates ON dates.date_id = Mal_Client_Relationship.date_id
    WHERE confirmcode = 'y' && EndDate >= CURRENT_DATE( ) || HAVING count(*) = 0
    GROUP BY `mallname`
    ORDER BY `mallname`
) t
ON m.mallname = t.mallname