KonkurStudy

سوال ۱۱۸ کنکور ارشد مهندسی کامپیوتر ۱۴۰۰

اهمیت
۰/۵

این شمای پایگاه داده را در نظر بگیرید:

Student(sid, sname, age)
Course(cid, cname, credits)
Takes(sid, cid, grade)

می‌خواهیم sid دانشجویانی را پیدا کنیم که هم در درس Database و هم در درس Math ثبت‌نام کرده‌اند. کدام پرس و جوی SQL برای این منظور مناسب است؟

I.

SELECT T1.sid
FROM Course C1, Takes T1
WHERE C1.cid = T1.cid AND C1.cname = 'Database'
INTERSECT
SELECT T2.sid
FROM Course C2, Takes T2
WHERE C2.cid = T2.cid AND C2.cname = 'Math'

II.

SELECT T1.sid
FROM Course C1, Takes T1
WHERE C1.cid = T1.cid AND C1.cname = 'Database'
AND T1.sid IN (SELECT T2.sid
               FROM Course C2, Takes T2
               WHERE C2.cid = T2.cid AND C2.cname = 'Math')

III.

SELECT T1.sid
FROM Course C1, Takes T1
WHERE C1.cid = T1.cid AND C1.cname = 'Database'
AND EXISTS (SELECT *
            FROM Course C2, Takes T2
            WHERE C2.cid = T2.cid AND C2.cname = 'Math' AND C2.sid = T1.sid)
#sql#intersect#in-subquery#correlated-subquery#exists#invalid-column-reference