2011-12-07 5 views
0

私は3つのテーブルの教師の課題と課題を持っています。教師がログインすると、教師であるかどうかに関係なく、関連する記録があるかどうかに関係なく、すべての主題を表示したい。何の関連レコードが存在しない場合(割り当て)私はそれが0MYSQLはすべてのレコードを表示し、関連するレコードを数えます

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

に教師IDにフィルタを移動する非常に有用ではありません。 [サンプルコード](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 

編集は - 外部結合部分のテーブルのフィールドだけを表示

+0

は機能していませんが、まだ2つのアイテムしか表示されていません。 where句を削除すると、すべての件名が表示されますが、ユーザーに基づいて割り当ての数がフィルタされません。 – user982853

+0

ああ、私はそれがどのように問題であったかを見ています。私は今修正しました - 外部結合節内の適切な場所に条件を移動しました –

+0

BAM!それは完全に動作します。私はstackoverflowせずに何をするだろう。あなたとこのブログは私に何時間もの自己教えを救ってくれました。ありがとうございました。 – user982853

関連する問題