簡體   English   中英

MySQL在一個查詢中涉及兩個COUNTS,涉及3個表

[英]mySQL two COUNTS in one query with 3 tables involved

我有3張桌子,即:Town; 村; 農民...我需要計算每個村庄有多少個農民,以及每個鎮有多少個村庄。 我是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

由於將沒有任何農民可以加入,因此應將行從結果集中刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM