0

我有 4 个表 (Type01, Type02, Type03, Type04) 。他们有不同的列。表 Type01 是 3 个子表 (subtype01, subtype02, subtype03) 的父表。并且它与它的孩子具有一对一的关系(父母中的每条记录对应于只存在于其中一个孩子中的一条记录)。我想按顺序(插入日期)检索所有 4 个表的所有记录(使生活更轻松),包括相关子项。因此,我创建了一个具有 types 通用 ID 的超级表。请看图。

在此处输入图像描述

现在,用于检索包括表 Type01 的子表在内的 4 个表的所有记录的 sql 查询是什么?这是最有效的设计(空间和检索速度)吗?

非常感谢 。

4

1 回答 1

1

尝试:

SELECT Types.ID, COALESCE(SubType1.Name, Type2.Name, Type3.Name) as Name,
  COALESCE(SubType2.Description, Type1.Description, Type2.Description) as Description,
  ...
FROM Types
  LEFT JOIN SubType1 ON (Types.ID = SubType1.ID)
  LEFT JOIN SubType2 ON (Types.ID = SubType2.ID)
  ... 
WHERE ...
ORDER BY Types.Insert_Date;

填写您要返回的各个列,为所有叶节点表添加 LEFT JOIN,并添加您的 WHERE 条件。

于 2011-05-11T03:35:47.577 回答