连续两次查询同一列

时间:2014-02-01 15:35:11

标签: sql postgresql

我在尝试选择同一行中的学生姓名和教授姓名方面遇到了问题。

表用户

ID --- NAME

表研究

STUDENT_ID (FK) --- PROFESSOR_ID (FK)
     referencing USERS

就像我上面说的那样,我想在同一行中选择两个名字。 有什么建议吗?

另外,在RESEARCHES表中有一个名为AUX_PROFESSOR的可选字段,如果设置了,我还需要选择他的名字。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您需要多个联接。以下将在一行中获得两个名称:

select s.name as student_name, p.name as professor_name
from users s join
     researches r
     on s.id = r.student_id
     users p
     on p.id = r.professor_id;

如果你有一两位教授,你可以这样做:

select s.name as student_name,
       max(p.name) as professor1_name,
       (case when min(p.name) <> max(p.name) then min(p.name) end) as professor2_name
     researches r
     on s.id = r.student_id
     users p
     on p.id = r.professor_id
group by s.name;

你没有说如何区分数据中的两种类型的教授,所以这只列出了两个名字。

答案 1 :(得分:0)

您只需要对结果集中的列进行别名。

SELECT  s.Name AS StudentName,
        p.Name AS ProfessorName
[...]