好吧,我有一个问题,我有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个表中具有相同数量的列
我怎么能只用一个查询来获得一个人的细节,无论是教授还是学生?或者我可以用它做什么?
使用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)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |