سوال ۱۱۸ کنکور ارشد مهندسی کامپیوتر ۱۴۰۰
اهمیت
۰/۵
این شمای پایگاه داده را در نظر بگیرید:
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)
پاسخ صحیح: گزینهٔ C — فقط I و II
پاسخ تشریحی
We need the sid of students who appear in both the set "took Database" and the set "took Math". …
ادامهٔ پاسخ تشریحی ویژهٔ مشترکان است.
مشاهدهٔ پاسخ کامل#sql#intersect#in-subquery#correlated-subquery#exists#invalid-column-reference