在3个表中搜索数据但是线性连接?

时间:2015-11-25 16:59:14

标签: mysql

我有3张桌子,

螺柱:

sid(PK),姓氏,名字,标题,dob,性别

这是一张充满学生信息的表格,

prog:

pid(PK),ptitle,paward,length,did

这是一个充满大学课程的表格,如

pid = G500 ptitle =计算机科学..

Enrl:

sid,pid,lbl,status

我需要获得的是从StudEnrlProg的信息。

例如SID的学生,我可以自然地加入它以获取所有相关字段,然后将新创建的表中的pid与prog的pid相匹配但是对于我在SQL中的生活,我无法弄明白。

我尝试过像

这样的东西
 select ptitle 
 from prog 
 where prog.pid in 
    (select * from stud, enrl where stud.sid = enrl.sid)

但是这不允许您选择student号码来搜索甚至在这种情况下工作。

有人帮助一个兄弟在这里吗?

1 个答案:

答案 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'

如果您需要来自progstud表的信息,则可以在1个查询中使用多个联接...

SELECT p.ptitle, s.firstname, s.lastname
FROM prog p
  INNER JOIN enrl e USING (pid)
  INNER JOIN stud s USING (sid)

的引用: