0
我有一個團隊,學校和作業數據庫。在選擇作業後,學校(用戶無論如何)都可以將一個小組添加到作業中,以便他們可以開始作業。 ER圖如下所示: 重要事項:即使數據庫的設置建議不然,團隊< - >分配關係是1:N。一個團隊只能處理一項任務。這是通過ORM系統控制的。MySQL三維三角查詢
現在這裏有一個問題:數據庫中有團隊負責不屬於他們學校的作業:學校選擇作業,創建團隊並刪除他們的作業選擇。我需要找到這種情況下的學校(身份證,姓名)。
到目前爲止,我已經成功地拿出了最好的查詢是:
SELECT schools.school_id, schools.name
FROM schools
LEFT JOIN teams ON schools.school_id = teams.school_id
LEFT JOIN assignment_teams ON teams.team_id = assignment_teams.team_id
LEFT JOIN assignment_schools ON schools.school_id = assignment_schools.school_id
WHERE assignment_teams.assignment_id != assignment_schools.assignment_id;
但當我手工檢查的結果這是行不通的。我在找什麼正確的查詢?
對於每個查詢的性能對比分析,請參閱[@ Quassnoi的博客文章](http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/)。 – eggyal
@eggyal我已經閱讀過一篇關於比較表現的文章(可能不是那篇文章),但我仍然更喜歡分析。 – Neil
由於我只需要一次(用於分析當前情況),速度並不重要。我選擇了最簡單的查詢(第一個),它的工作就像一個魅力。謝謝! –