У меня есть 3 таблицы: Town; Деревня; Фермеры ... и мне нужно СЧИТАТЬ, сколько Фермеров есть в Деревне, и сколько Деревн есть для Города. Я новичок в PHP и MySQL, так что мой код до сих пор мусор .. До сих пор я сделал код для запроса:mySQL два COUNTS в одном запросе с участием 3 таблиц
$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 |
Работает хорошо, пока я не попытаюсь выполнить поиск определенного города. Случается, что значения столбца 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? –