首页 > 解决方案 > 父子SQL查询

问题描述

我有一个数据库,其中有从父类到多个子类的继承。示例数据库的 UML

我已经用类表继承实现了继承。用一个联合表实现它会导致一个非常大的表,其中包含很多空值,这就是选择类表继承的原因。在继承中,每个父对象可能只是子对象之一,在示例中,这意味着每个人只能是学生、父母或教师。

我现在的问题是如何编写一个查询来获取有关一个人的所有信息,而不知道它是哪种类型的人,只知道 ssn。我知道我可以通过左连接所有子表和父表来做到这一点,但是有没有办法做到这一点,所以我不必做所有的左连接?实际上有更多的子表。

关于数据库的所有内容都是使用 SQLITE 编写的。

标签: sqldatabasesqlite

解决方案


一句话,没有。。

不过,您可以使用查询为您编写一些 SQL:

SELECT 
    'LEFT JOIN ' || m.name || ' ON ' || m.name || '.ssn = person.ssn'
FROM 
  sqlite_master AS m
JOIN 
  pragma_table_info(m.name) AS p
WHERE 
  p.name = 'ssn'

如果有 100 个带有 ssn 列的表,它将为您写入 100 个连接


推荐阅读