2011-12-07 136 views
0

我有3個表老師的主題和作業。當教師登錄時,無論他是否是老師,我都希望顯示所有科目,不管是否有相關記錄。如果沒有相關的記錄(轉讓)我希望它顯示爲0。MYSQL顯示所有記錄和相關記錄

Teacher Table: Teacher_PK, Teacher_name  
Subject Table: Subject_PK, Teacher_fk, Subject_name, 
Assignments Table: Assignment_PK, Subject_fk, assignment_name 

現在我有這樣的:

"SELECT *, count(a.subject_fk) 
     FROM assignment AS b 
     LEFT OUTER JOIN subject AS a 
     ON a.subject_fk = b.subject_PK 
     WHERE a.teacher_fk = $sessionVar 
     GROUP BY b.subject_fk 
     ORDER BY b.subject_name ASC"; 

與此查詢的問題是,它不會顯示全部如果有相關的表格,它只顯示主題。

English (3) 
Math(2) 

我希望它顯示什麼是

English(3) 
Math(2) 
Gym(0) 
Science(0) 

感謝您的任何幫助。 主題表格

+0

顯示剛剛從表中的字段是不是非常有用。 [示例代碼](http://sscce.org/)解釋更多;請使用'CREATE TABLE'和'INSERT'作爲示例數據。 – outis

回答

1
SELECT 
    s.*, 
    count(a.assignment_pk) as numAssignments 
FROM 
    Subject s 
    LEFT OUTER JOIN Assignments a ON 
    s.Subject_pk = a.Subject_fk AND 
    a.teacher_fk = $sessionVar 
GROUP BY 
    s.* 
ORDER BY 
    s.subject_name ASC 

編輯所有受試者 - 移動對老師的ID過濾器的外連接部分

+0

不工作,它仍然只顯示兩個項目。當我刪除where子句時,它顯示所有主題,但不會根據用戶篩選分配的數量。 – user982853

+0

噢,我明白這會是一個問題。我已經修復它 - 將條件移至外部連接子句 –

+0

BAM中的適當位置!它完美的作品。如果沒有使用stackoverflow,我會做什麼。你和這個博客節省了我幾個小時的自學,非常感謝你。 – user982853