Php mySQL在一个查询中进行两次计数,涉及3个表

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

我有三张桌子,分别是:城镇;村庄;农民…我需要计算每个村庄有多少农民,每个城镇有多少村庄。我不熟悉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 = 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?