2012-08-27 29 views
1

我有兩個表:一個包含在清單(checklist_id,內容)上的項目,另一個包含用戶和清單項目編號(checklist_fk,user_fk)之間的關係。用戶每次檢查的項目關閉,插入某一行的指示,我使用MySQL加入兩個表,但首先進行篩選

SELECT content, user_fk, checklist_id, checklist_fk 
    if (checklist_fk is null, false, true) completed 
    FROM checklist 
    LEFT JOIN checklist_completion ON checklist_id = checklist_fk; 

但是用戶15完成項目3

當我查詢此,完成返回true,如果任何用戶有完成了一個給定的清單項目。我需要在加入之前過濾第二個表WHERE user_fk = XX,但我該怎麼做?我相信你應該使用HAVING user_fk = XX,但是會引發語法錯誤。

回答

2

如果你針對一個特定的用戶,你必須添加條件LEFT JOIN內像這樣:

SELECT content, checklist_id, checklist_fk AS completed 
FROM checklist 
LEFT JOIN checklist_completion ON checklist_id = checklist_fk AND user_fk = 123 

順便說一句,你可能已經注意到了,我已經採取了IF聲明,因爲它是容易檢查你的代碼中的NULL條件。

+0

非常感謝!奇蹟般有效。 –