我有4个表(Type01,Type02,Type03,Type04)。他们有不同的列。表Type01是a 3个子表的父级(subtype01,subtype02,subtype03)。它有一对一的关系 与其子项(父项中的每条记录对应于仅存在于其中一项中的一条记录 孩子们)。我想检索所有4个表的所有记录(以使生活更轻松),包括 按订单关联的儿童(插入日期)。所以,我创建了一个具有通用ID的超级表 类型。请看图。
现在,用于检索包括表的子项在内的4个表的所有记录的sql查询是什么 Type01?这是最有效的设计(空间和检索速度)?
非常感谢。
答案 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条件。