我有一個表與事件信息(名稱,日期,描述等)和一個表包含出席信息(人,事件,無論他們是否參加)。我試圖從這兩個表中創建一個視圖,以顯示基於事件的「是」響應的總數和「否」響應的總數。這是我迄今爲止所擁有的。左連接與三張表不行爲如預期
SELECT e.id AS event, COUNT(yea.attendance) AS yes, COUNT(nea.attendance) AS no
FROM event_information e
LEFT JOIN event_attendance yea
ON e.id = yea.event_id AND yea.attendance = 'Y'
LEFT JOIN event_attendance nea
ON e.id = nea.event_id AND nea.attendance = 'N'
GROUP BY event;
所以我希望這會返回每個事件ID(1,2,3和4)與'是'和'否'的相應數量的迴應。
event yes no
1 3 1
2 2 2
3 1 3
4 4 0
而是返回
event yes no
1 3 3
2 4 4
3 3 3
4 4 0
當我只參加event_attendance表一次檢索要麼是或否的結果如下,那麼正確的數字是通過提起。只有當我重新加入同一個表時,我纔會得到不正確的結果。
現貨在,謝謝。它爲什麼在這裏生成笛卡爾產品? – ryansin
@ user2696497這就是聯接所做的,它總是在所有正在聯接的表中創建一個笛卡爾積。 – Barmar