Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 此问题的正确查询应该是什么?_Sql_Database_Postgresql_Union_Where Clause - Fatal编程技术网

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

Sql 此问题的正确查询应该是什么?,sql,database,postgresql,union,where-clause,Sql,Database,Postgresql,Union,Where Clause,好了,伙计们,我有一个问题,我有4张表要总结 此数据库位于PostgreSQL上,模型关系为继承关系 表1:(人) 表2:学生(从个人继承) 表3:教师(从个人继承) 我希望通过一个查询,获得代码所属的两个表之一的所有信息 我做不到 SELECT * FROM STUDENT WHERE ID = {{whatever}} 因为是静态的,我想在另一个表中搜索(ID{{{whatever}} 我试过了 SELECT * FROM STUDENT WHERE ID = {{whatever}

好了,伙计们,我有一个问题,我有4张表要总结

此数据库位于PostgreSQL上,模型关系为继承关系

表1:(人)


表2:学生(从个人继承)


表3:教师(从个人继承)


我希望通过一个查询,获得代码所属的两个表之一的所有信息

我做不到

SELECT *
FROM STUDENT
WHERE ID = {{whatever}}
因为是静态的,我想在另一个表中搜索
(ID{{{whatever}}

我试过了

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

UNION ALL

SELECT *
FROM TEACHER
WHERE ID = {{whatever}}
但它不起作用,因为
UNION
需要在两个表中具有相同数量的列


我怎样才能通过一个查询获得一个人的详细信息,无论是教授还是学生?或者我可以用什么方式进行查询?

使用
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

使用
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
你说“继承”是什么意思?Postgress支持对象表吗?或者它只是一个传统的关系数据库?那么,这三个表都存在吗?或者Person表是一个抽象的“模板”而不是一个表?你说“继承”是什么意思?Postgress支持对象表吗?或者它只是一个传统的关系数据库?那么,这三个表都存在吗?或者Person表是一个抽象的“模板”,而不是一个表?
SELECT *
FROM STUDENT
WHERE ID = {{whatever}}

UNION ALL

SELECT *
FROM TEACHER
WHERE ID = {{whatever}}
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