0

私はテーブルを持っています:

courseTracker(
        student int
        courseID int
)

学生「B」と同じコースを受講しているすべての学生を見つけたい

4

1 に答える 1

0

この 2 つのどちらが必要なのかよくわからないので、両方を含めました。

これにより、B と共通するコースが少なくとも 1 つある学生が返されます。

SELECT DISTINCT student FROM coursetracker
WHERE courseID IN (
    SELECT courseID FROM coursetracker WHERE student = 'B'
)

これにより、B とまったく同じコースを持つ学生が返されます。

SELECT student FROM (SELECT DISTINCT student FROM coursetracker) c
WHERE NOT EXISTS (
    SELECT * FROM coursetracker c1
        FULL JOIN coursetracker c2 ON c1.courseId = c2.courseId
            AND c1.student = c.student AND c2.student = 'B'
    WHERE c1.courseID IS NULL OR c2.courseID IS NULL
)
于 2013-11-03T03:35:51.897 に答える