该问题的正确查询应该是什么?

Car*_*res 0 sql postgresql

好吧,我有一个问题,我有4个表,我将总结.

这个数据库在PostgreSQL上,模型关系是一个继承

表1 :(人)

id: character
name: character    
last_name:character    
age: character
Run Code Online (Sandbox Code Playgroud)

表2:学生(继承自人)

id: character (imported from person)         
name: character (imported from person)        
last_name:character (imported from person)        
age: character (imported from person)    
college: character    
courses: character
Run Code Online (Sandbox Code Playgroud)

表3:老师(继承自人)

id: character (imported from person)        
name: character (imported from person)        
last_name:character (imported from person)        
age: character (imported from person)    
license: integer    
date_empl: date
years_working: integer
Run Code Online (Sandbox Code Playgroud)

我希望通过单个查询,获取代码所属的两个表之一的所有信息,当然.

我不能做

SELECT *
FROM STUDENT
WHERE ID = {{whatever}}
Run Code Online (Sandbox Code Playgroud)

因为是静态的,我想(ID {{whatever}}在另一个表中搜索.

我试过了

SELECT *
FROM STUDENT
WHERE ID = {{whatever}}

UNION ALL

SELECT *
FROM TEACHER
WHERE ID = {{whatever}}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为UNION需要在2个表中具有相同数量的列

我怎么能只用一个查询来获得一个人的细节,无论是教授还是学生?或者我可以用它做什么?

GMB*_*GMB 5

使用UNION是一种解决方案.当列不同时,您可以在输出中生成多个列,并NULL在它们不可用的记录中填充它们.

SELECT id, name, last_name, age, college, courses, null, null FROM student
UNION ALL
SELECT id, name, last_name, age, null, null, license, date_empl FROM teacher
Run Code Online (Sandbox Code Playgroud)