我手邊有一項任務,要求我返回一位學生的姓名的詳細信息,這名學生是由霍夫曼的姓氏老師教授的課程,我被卡住了。postgresql多個子查詢
SELECT * FROM Public."Class" WHERE tid=(
SELECT tid FROM Public."Tutor" WHERE tname LIKE '%Hoffman');
這讓我想起了霍夫曼教授的課程,但是從這裏我不確定要去哪裏。我相信我必須訪問「已註冊」表,然後才能訪問學生表,但嘗試無效。下面的查詢是我在得到查詢之前得到的。-_-我確定我將不得不使用HAVING
或IN
關鍵字,但我不知道如何處理它們!
SELECT * FROM Public."Student" WHERE programme='IT' (
SELECT * FROM Public."Class" WHERE tid=(
SELECT tid FROM Public."Tutor" WHERE tname LIKE '%Hoffman')
);
任何幫助將不勝感激!
的數據庫結構如下: - 再次:)
Student(sid integer, sname varchar(20), programme varchar(4), level integer, age integer) Class(ccode varchar(6), cname varchar(25), week_day varchar(3), meets_at time, room varchar(6), tid integer) Enrolled(sid integer, ccode varchar(6)) Tutor(tid integer, tname varchar(20))
感謝更新: -
SELECT DISTINCT *
FROM Public."Student" s
INNER JOIN Public."Enrolled" e ON e.sid = s.sid
INNER JOIN Public."Class" c ON c.ccode = e.ccode
INNER JOIN Public."Tutor" t ON t.tid = c.tid
WHERE programme='IT' AND t.tname LIKE '%Hoffman';
Pg教程非常值得一看:http://www.postgresql.org/docs/current/static/tutorial.html。 (不是很尖刻,只是對某人開始使用SQL提出一個誠實的建議)。 –