Php mySQL在一个查询中进行两次计数,涉及3个表
我有三张桌子,分别是:城镇;村庄;农民…我需要计算每个村庄有多少农民,每个城镇有多少村庄。我不熟悉php和mysql,所以我的代码还是垃圾。。到目前为止,我已经完成了查询的代码:Php mySQL在一个查询中进行两次计数,涉及3个表,php,sql,Php,Sql,我有三张桌子,分别是:城镇;村庄;农民…我需要计算每个村庄有多少农民,每个城镇有多少村庄。我不熟悉php和mysql,所以我的代码还是垃圾。。到目前为止,我已经完成了查询的代码: $query = "SELECT *, COUNT(DISTINCT village.villageID) AS cnt_village, COUNT( farmer.farmerID ) AS cnt_farmers FROM town LEFT JOIN village ON village.townID = t
$query = "SELECT *, COUNT(DISTINCT village.villageID) AS cnt_village,
COUNT( farmer.farmerID ) AS cnt_farmers
FROM town LEFT JOIN village ON village.townID = town.townID
LEFT JOIN farmer ON farmer.villageID = village.villageID
GROUP BY town.townID
ORDER BY town.townName";
$result = mysql_query($query);
它已经输出了如下所示的正确计数:
----TOWN--------VILLAGES----FARMERS-----
| Caibiran | 2 | 23 |
| Culaba | 7 | 39 |
| TOTAL | 9 | 62 |
在我尝试搜索某个特定城镇之前,它一直运行良好。发生的情况是,“农民”列的值显示了指定城镇的正确值。但整个表格仍然显示,其他城镇的农民栏显示为0
它表明:
----TOWN--------VILLAGES----FARMERS-----
| Caibiran | 2 | 23 |
| Culaba | 7 | 0 |
| TOTAL | 9 | 23 |
但我真正想要的是:
----TOWN--------VILLAGES----FARMERS-----
| Caibiran | 2 | 23 |
| TOTAL | 2 | 23 |
但我不知道怎么做。我已经没有主意了。请帮帮我。这能解决问题吗
SELECT *, COUNT(DISTINCT village.villageID) AS cnt_village,
COUNT( farmer.farmerID ) AS cnt_farmers
FROM town
JOIN village ON village.townID = town.townID
JOIN farmer ON farmer.villageID = village.villageID
GROUP BY town.townID
ORDER BY town.townName
由于没有任何farmer可以加入,因此应该从结果集中删除行。我不能不测试就说,但请尝试删除
左连接,然后尝试普通的equijoin?