2011-05-08 88 views
0

我有4個表格(Type01,Type02,Type03,Type04)。他們有不同的專欄。 Table Type01是3個子表(子類型01,子類型02,子類型03)的 父級。並且它與子女有一對一的關係 (父母中的每條記錄對應於僅存在於 子女中的一箇中的一條記錄)。我想通過命令(插入日期)檢索所有4個表(包括 相關子節點)的所有(使生活更輕鬆)記錄。所以,我創建了一個具有通用ID爲 類型的超級表。請看這張圖。從包含多層次結構的設計中檢索記錄

enter image description here

現在,是提取4個表,包括表 類型01兒童的所有記錄sql查詢?這是最有效的設計(空間&檢索速度)?

非常感謝。

+0

男人。對不起。我不知道這件事。真的。你能爲我解釋一下嗎?再次,我不知道這一點。 – Roobah 2011-05-08 06:54:22

+0

好的。請任何答案。 – Roobah 2011-05-08 09:51:22

回答

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條件。

+0

非常感謝。 – Roobah 2011-05-15 08:59:35