0

私は学生IDとクラスIDを含むテーブル学生クラス魔女を持っています

CREATE TABLE [StudentClass]
([StudentId] varchar(20), [ClassId] varchar(20));

私がやりたいことは、学生のクラスメートをすべて見つけることです。例えば:

student 1 in class 1 
student 1 in class 2
student 2 in class 2 

私が学生1を検索すると、結果として取得したい
: 私
が実際に得たのは次のとおりです。

student1 | null
student1 | student2

最初の行しかない場合:

student 1 in class 1 

期待される結果は次のようになります。

student1 | null

select distinct s1.StudentId, s2.StudentId 
from StudentClass s1
             left join StudentClass s2 
                     on s1.ClassId = s2.ClassId and 
                        s1.StudentId != s2.StudentId
where s1.StudentId = 'Student1'

ご協力ありがとうございました

4

2 に答える 2

0

これをクエリに追加します

SELECT...
FROM..
WHERE...
      AND s2.StudentId IS NOT NULL    -- <== this condition
于 2012-08-29T08:00:39.060 に答える
0

group byの代わりに使用してみてくださいdistinct:

select s1.StudentId as std1, s2.StudentId as std2
from StudentClass s1
             inner join StudentClass s2 
                     on s1.ClassId = s2.ClassId and 
                        s1.StudentId != s2.StudentId
where s1.StudentId = '1'
group by s1.StudentId, s2.StudentId 

こちらで確認できます

于 2012-08-29T08:03:13.510 に答える