私は3つのテーブルを持っています。村;農民...そして、私は村あたりの農民の数と町あたりの村の数を計算する必要があります。mySQL 2つの勘定に3つのテーブルが含まれている1つのクエリ
$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 |
私は、クエリのコードを行っているこれまでのところ..私はPHPとMySQLへの新たなんだ、だから私のコードはまだゴミです
特定の町を検索しようとするまでうまくいきます。 Farmers列の値は、指定された町の正しい値を表示します。しかし、テーブル全体がまだ0
を示す他の町の農家の列に表示されていることは、この例を示します
----TOWN--------VILLAGES----FARMERS-----
| Caibiran | 2 | 23 |
| Culaba | 7 | 0 |
| TOTAL | 9 | 23 |
をしかし、私が本当にしたいことは、これは次のとおりです。
----TOWN--------VILLAGES----FARMERS-----
| Caibiran | 2 | 23 |
| TOTAL | 2 | 23 |
しかし、私どのようにそれを行うか分からない。私はアイデアがなくなった。私を助けてください。
私はテストなしで言うことはできませんが、LEFT JOIN'sを削除してプレーンなequijoinを試してみませんか? –