包括 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
到 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