从包含多个层次结构的设计中检索记录

时间:2011-05-08 05:34:29

标签: database hierarchy data-retrieval

我有4个表(Type01,Type02,Type03,Type04)。他们有不同的列。表Type01是a 3个子表的父级(subtype01,subtype02,subtype03)。它有一对一的关系 与其子项(父项中的每条记录对应于仅存在于其中一项中的一条记录 孩子们)。我想检索所有4个表的所有记录(以使生活更轻松),包括 按订单关联的儿童(插入日期)。所以,我创建了一个具有通用ID的超级表 类型。请看图。

enter image description here

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

非常感谢。

1 个答案:

答案 0 :(得分: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条件。