我有3张桌子,
螺柱:
sid(PK),姓氏,名字,标题,dob,性别
这是一张充满学生信息的表格,
prog:
pid(PK),ptitle,paward,length,did
这是一个充满大学课程的表格,如
pid = G500 ptitle =计算机科学..
和
Enrl:
sid,pid,lbl,status
我需要获得的是从Stud
到Enrl
到Prog
的信息。
例如SID
的学生,我可以自然地加入它以获取所有相关字段,然后将新创建的表中的pid
与prog的pid
相匹配但是对于我在SQL中的生活,我无法弄明白。
我尝试过像
这样的东西 select ptitle
from prog
where prog.pid in
(select * from stud, enrl where stud.sid = enrl.sid)
但是这不允许您选择student
号码来搜索甚至在这种情况下工作。
有人帮助一个兄弟在这里吗?
答案 0 :(得分:1)
我认为这两个例子应该给你一个开始。调整它们以满足您的需求。
-- all programs for a single student
SELECT p.ptitle
FROM prog p
INNER JOIN enrl e USING (pid)
WHERE
e.sid = 1000
-- all students for a single program
SELECT s.firstname, s.lastname
FROM stud s
INNER JOIN enrl e USING (sid)
WHERE
e.pid = 'G500'
如果您需要来自prog
和stud
表的信息,则可以在1个查询中使用多个联接...
SELECT p.ptitle, s.firstname, s.lastname
FROM prog p
INNER JOIN enrl e USING (pid)
INNER JOIN stud s USING (sid)
的引用: