来自多个表的SQL查询

时间:2014-09-12 09:15:17

标签: sql postgresql select join

我正在学习SQL的初学者课程,并且一直在玩一些查询。我真正理解的一件事是如何正确地理解"查询多个表,即;比较两个或多个表中的值。

例如, 我有一个名为学生的表,其中包含用户名,姓名,出生日期和专业(仅代码。例如,CS代表"计算机科学")特别的人。我选择将用户名作为主键。

我还有一个名为 Major 的表,其中包含主要代码(例如CS)作为主键以及整个主要名称。例如," CS" ="计算机科学",NS ="神经科学"等

现在,假设我想找一个专业的名字,给定一个学生的用户名。以下是此查询的想象伪代码:

1)在学生表中:提供用户名,检查该特定人员的主要内容。

select majorcode from Student where username='aUserName';

正确地这样做了我的主要代码。

2)在主要表格中:找到提供代码的专业标题。

select majorTitle from Major where majorcode='theMajorCode';

结合,我写道:

select majorTitle from Major where majorcode=(select majorcode from Student where username='aUserName');

但是,现在假设我想要两个 <主要的标题(来自主要表格)以及学生名称 (来自学生表)。

关于如何做到这一点的任何建议?

1 个答案:

答案 0 :(得分:3)

您需要加入。这样的事情 - 请注意,学生中主要代码不在Major中的任何行,反之亦然,将不包括在内。如果那不是您想要的,请查看外部联接

SELECT majorTitle, username
FROM Student s
JOIN Major m ON s.majorcode = m.majorcode

您当然可以为该查询添加WHERE子句。使用别名的参考表(学生为“s”,Major为“m”)以避免歧义。