【发布时间】:2019-01-30 01:52:34
【问题描述】:
伙计们,我有一个问题,我有 4 个表格要总结一下。
这个数据库在PostgreSQL上,模型关系是继承
表 1:(人)
id: character
name: character
last_name:character
age: character
表 2:学生(从 Person 继承)
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
TABLE3:老师(从 Person 继承)
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
我希望通过单个查询,获取代码所属的两个表之一的所有信息。
我做不到
SELECT *
FROM STUDENT
WHERE ID = {{whatever}}
因为是静态的,我想在另一个表中搜索(ID {{whatever}}。
我试过了
SELECT *
FROM STUDENT
WHERE ID = {{whatever}}
UNION ALL
SELECT *
FROM TEACHER
WHERE ID = {{whatever}}
但它不起作用,因为UNION 需要在 2 个表中具有相同数量的列
我怎样才能通过一个查询获得一个人的详细信息,无论是教授还是学生?或者我可以通过什么方式做到这一点?
【问题讨论】:
-
“继承”是什么意思? Postgress 是否支持对象表?或者它只是一个传统的关系数据库?那么,所有 3 个表都存在吗?或者 Person 表是一个抽象的“模板”而不是一个表?
标签: sql database postgresql union where-clause