我有下表,其中插入了一些信息。这是一个例子:
餐桌人
id_person name
--------------------------
1 name1
2 name2
3 name3
4 name4
5 name5
6 name6
[餐桌教授
id_professor (references id_person)
------------
1
2
5
6
桌生
id_student (references id_person)
----------
1
3
4
5
我想执行一个select
,它显示来自所有表的几乎所有数据,但仅显示来自学生或教授的人员。因此,给出这个示例,我想得到的输出是:
name id_professor id_student
-------------------------------------------
name2 2 NULL
name3 NULL 3
name4 NULL 4
name6 6 NULL
我该怎么做?
我尝试执行此查询没有成功:
select p.name, s.id_student, pr.id_professor from
person p inner join student s on p.id_person = s.id_student right join professor r on s.id_student = pr.id_professor
where (s.id_student is null) or (pr.id_professor is null);
left join
和一些过滤条件:select p.name, pr.id_professor, s.id_student
from person p left join
professor pr
on pr.id_professor = p.id_person left join
student s
on s.id_student = p.id_person
where (pr.id_professor is not null and s.id_student is null) or
(pr.id_professor is null and s.id_student is not null);
select p.name, pr.id_professor, s.id_student
from person p
left join professor pr on pr.id_professor = p.id_person
left join student s on s.id_student = p.id_person
where s.id_student is not null or pr.id_professor is not null