2013-04-25 36 views
2

加入时遇到问题。在PostgreSQL中你如何加入两个表格选择不同的信息

我有一个表称为subjects

subno subname 
30006 Math 
31445 Science 
31567 Business 

我也有另一个表称为enrollment

subno sno 
30009 980008 
4134 988880 

等。

如何列出科目号和主题名称为学生9800007 ?

+0

SQLFiddle:http://sqlfiddle.com/#!12/dcd01 – 2013-04-25 05:20:25

回答

1

试试这个

select * 
from subjects s 
    left join enrollment e on s.subno = e.subno 
where sno=9800007 
+0

其实不用担心,我只是改变了这一点!谢谢:) – user2314197 2013-04-25 05:23:29

+0

尝试使用内部连接或只是加入 – swetha 2013-04-25 05:24:45

+0

我怀疑你的意思是'LEFT OUTER JOIN'命令颠倒。尝试在注释中链接的SQLFiddle。 – 2013-04-25 05:26:26

3

如果你想返回零行的学生没有注册,使用LEFT [OUTER] JOIN,如:

SELECT e.sno, s.subno, s.subname 
FROM enrollment e LEFT OUTER JOIN subjects s ON s.subno = e.subno 
WHERE e.sno=988880; 

要返回的学生没有行没有入学,使用INNER JOIN

SELECT e.sno, s.subno, s.subname 
FROM enrollment e INNER JOIN subjects s ON s.subno = e.subno 
WHERE e.sno=988880; 

请注意,连接顺序很重要(RIGHT [OUTER] JOINLEFT [OUTER] JOIN - OUTER关键字是可选的),但不适用于INNER JOIN。出于这个原因,@ swetha的答案有一个问题:如果您正在查找有关学生的信息,则会颠倒连接顺序。

this SQLFiddle

相关问题