我需要做一个列表与扫描的大多数事情,公司...我有两个表,Exhibitors
和Leads
如何使用LEFT JOIN进行计数?
Leads
包含每一个参展商做每个“动作”。有时,在Exhibitors
表中,同一公司有两个帐户。例如,PepsiCO可能有两个账户。
连接两者的键/列被称为ExhibitorID
。
我需要检索前导数最多的20个(所以COUNT(*)在leads
),但我需要按公司Exhibitors
表进行分组。
Curerntly我使用这个:
SELECT t2.ExhibitorID, t2.Company, t2.Username, t1.Count
FROM exhibitors AS t2
, (SELECT ExhibitorID, COUNT(*) AS Count
FROM leads AS l
WHERE l.ContractorID = 100
AND l.ShowID = "20120228AB"
GROUP BY l.ExhibitorID
ORDER BY COUNT(*) DESC
LIMIT 20) AS t1
WHERE t2.ExhibitorID = t1.ExhibitorID
ORDER BY t1.Count DESC
但它没有按公司。感谢你的帮助。
首先,我会更改您的查询以使用正确的ANSI JOIN语法。 INNER/LEFT/RIGHT JOIN – Taryn 2012-03-20 15:56:59
此外,我不认为你想要一个'LEFT JOIN',因为你会得到零头数(或参展商),这将不计算在内。我认为你正在寻找'INNER JOIN' – swasheck 2012-03-20 16:05:34
@swasheck除非公司有可能有0个相关的线索,并且他想要得到该公司返回的0个点数......在这种情况下,他会想要一个“左边join'。 – 2012-03-20 16:07:35