У меня есть три таблицы; Графство, кладбище & Могилы. Помеченная колонка в таблице Graves является логической. Результат запроса должен включать количество «отмеченных» могил на каждом кладбище, включая нулевой подсчет.Zero COUNT в JOIN с тремя таблицами
County
-------------------------
| CountyID | Name |
-------------------------|
| 351 | Lee |
| 352 | Glascock |
-------------------------
Cemetery
--------------------------------------
| CEMID | CountyID | Name |
--------------------------------------|
| 1 | 352 | Smith Family |
| 2 | 352 | Adams Family |
| 3 | 352 | Jones Family |
| 4 | 351 | Harris Family |
--------------------------------------
Graves
--------------------------------------
| ID | CEMID | Name | Marked |
--------------------------------------|
| 1 | 1 | John Smith | Y |
| 2 | 1 | Mary Smith | N |
| 3 | 1 | Frank Smith | Y |
| 4 | 1 | Jane Smith | N |
| 5 | 2 | John Adams | Y |
| 6 | 2 | Ed Adams | N |
| 7 | 3 | Susan Jones | N |
--------------------------------------
Query Result
----------------------------------
| CEMID | Name | Count |
----------------------------------|
| 1 | Smith Family | 2 |
| 2 | Adams Family | 1 |
| 2 | Jones Family | 0 |
----------------------------------|
My current SELECT statement:
SELECT Cemetery.Name, Cemetery.CEMID, COUNT(Grave.Marked) AS Count
FROM Cemetery
JOIN County
ON Cemetery.CountyID = County.CountyID
JOIN Grave
ON Cemetery.CEMID = Grave.CEMID
WHERE CountyID = 352
AND Grave.Marked = TRUE
GROUP BY Cemetery.CEMID;
Это утверждение возвращает результат, но лань не включает Jones родового кладбища, потому что Отмеченное число равно нуль. Я понимаю, что «Grave.Marked = TRUE» находится не в том месте, но где я должен квалифицировать граф, чтобы включить кладбище, где отмеченный счет равен нулю.
Спасибо, что сработало. Время выполнения было довольно длинным для запроса. На примере из моей базы данных потребовалось почти 33 секунды с 200 кладбищами и 900 могилами. –
Если этот запрос занимает несколько секунд для заполнения таких небольших данных, вам нужны индексы для столбцов, используемых в 'join'. –