0
我有三張表;縣,公墓&墳墓。格雷夫斯表中的標記列是布爾值。查詢結果應包括每個墓地的「標記」墳墓的數量,包括零計數。加入三個表中的零COUNTs
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;
該聲明返回的結果,但不包括瓊斯家庭墓地,因爲標記計數爲零。我明白「Grave.Marked = TRUE」的位置是錯誤的,但我應該在哪裏定義Count以包括標記計數爲零的墓地。
謝謝,這工作。查詢的執行時間相當長。我的數據庫用了200個墓地和900個墳墓,這個例子差不多耗時33秒。 – 2015-02-05 17:59:15
如果此查詢需要幾秒鐘才能完成此類小數據,則需要在「join」中使用的列的索引。 – 2015-02-05 21:45:45