2017-05-27 15 views
1

を失敗したところ、私は私が持っている必要がありますどのような二つのテーブル(科目、学生)リターンレコードは、条件が

Subjects-> SubjID, NAME 
Students->ID, Name, SubjID 

Subjects 
    SubjID Name 

    1 | Maths 

Students 
    ID NAME, SubjID  
    11 | XYZ | 1 

を持っている場合でも、表2に参加左ID 1の生徒がこの科目を持っているかどうかを返します。

これまでの質問です。私は何を得る

select * from subjects sb 
left join students st on st.SubjID=sb.SubjID 

where sb.SubjID=1 and (st.ID is null or st.ID=10) 

結果は次のとおりです。件名1は、(任意の学生に関連付けられているまたはID 10と学生に関連付けられていない場合

私は結果を得る

しかし、被験者1の場合。私が必要としているのは:もしも被験者がassociaであっても私は他の学生と一緒にテーゼをしました。私はSubject tableの結果を得るべきです。

これを達成する方法はありますか?

+0

あなたはこれを過度に複雑にしていると思います。あなたが望む出力を口頭で説明するのではなく、代わりに私たちに表を表示できますか? –

答えて

2

あなたはstudentsテーブル内の行のみをフィルタリングされ、ONに、行がポストに参加フィルタリングされ、WHEREから条件を移動し、ID = 10以外の誰のための学生のレコードを表示したくない場合:

select * from subjects sb 
left join students st on st.SubjID=sb.SubjID and st.ID=10 
where sb.SubjID=1 
+0

素晴らしいです。出来た。ありがとう:) –