Php 两个表的SQL计数与第三个表的内部联接

Php 两个表的SQL计数与第三个表的内部联接,php,mysql,sql,database,join,Php,Mysql,Sql,Database,Join,我的数据库有两个名称不同的相似表。两个表中包含的一列称为zip,其中包含邮政编码 我有一个不同的表US zip code表,其中每个条目都包含县名称、县ID、州、州ID和邮政编码 我需要一个查询,它将告诉我前两个表中有多少条目与给定的县ID匹配,并将结果按县分组 也就是说,假设表A有4个邮政编码为“30017”的条目,表B有1个邮政编码为“30017”的条目。在美国邮政编码表中,“30017”对应于县名Gwinnett和县ID“839”。当我运行查询时,所需的结果是: Gwinnett 5

我的数据库有两个名称不同的相似表。两个表中包含的一列称为zip,其中包含邮政编码

我有一个不同的表US zip code表,其中每个条目都包含县名称、县ID、州、州ID和邮政编码

我需要一个查询,它将告诉我前两个表中有多少条目与给定的县ID匹配,并将结果按县分组

也就是说,假设表A有4个邮政编码为“30017”的条目,表B有1个邮政编码为“30017”的条目。在美国邮政编码表中,“30017”对应于县名Gwinnett和县ID“839”。当我运行查询时,所需的结果是:

Gwinnett    5
这是我尝试过的最新查询。我不知道它返回了什么数字。这绝对不是我所期望的,因为我尝试了单个组件查询来测试结果

SELECT b.County, COUNT(*) as Calls FROM (aLeads a, pLeads p)
INNER JOIN zipCodes b ON a.zip = b.ZipCode
WHERE b.countyID IN (2897, 2146, 839) 
AND a.callDate BETWEEN '2013-10-01' AND '2013-11-30'
GROUP BY b.County

有什么想法吗?

试着从zipcode表开始,然后加入aLeads和恳求:

SELECT b.County, COUNT(*) as Calls 
FROM zipCodes b 
INNER JOIN aLeads a ON a.zip = b.ZipCode
INNER JOIN pLeads p ON p.zip = b.ZipCode
WHERE b.countyID IN (2897, 2146, 839) 
GROUP BY b.County

感谢您的建议,最好先从邮政编码表开始。但是,此查询返回一个空集。还有其他想法吗?您可以创建两个临时表,第一个是与aLeads连接的zipcode。第二个是与诉状相连的zipcode。每个临时表都有邮政编码和计数。最后,将两个临时表连接在一起,并将计数相加。这几乎是正确的。经过一些分析,您提出的查询的唯一问题似乎是日期条件。我认为它返回一个空集,因为date子句只考虑表a和a。callDate介于'2013-10-01'和'2013-11-30'之间。是的,它当然考虑。我只是复制并粘贴了您发布的sql查询,并添加了连接。我将编辑此答案中的查询以删除日期条件。