好吧,只是畫一幅我想要實現的圖片。SQL如何分組兩個單獨的表,以獲得此輸出
我有一個XML文件:
<root>
<item id="test1" level="1" />
<item id="test2" level="1">
<item id="test3" level="2" />
<item id="test4" level="2" >
<item id="test5" level="3">
<item id="test6" level="4" />
</item>
</item>
<item id="test7" level=2" />
</item>
</root>
我讀取XML罰款,並且將數據存儲到一個SQL表是這樣的:
讓我們把這個TABLEA
ID | ParentID | level
---------------------------
test1 NULL 1
test2 NULL 1
test3 test2 2
test4 test2 2
test5 test4 3
test6 test5 4
test7 test2 2
現在表B看起來像這樣:
GUID | ID
-----------------------------------------------
c567207d-5317-4d0e-b24d-5ae3f7fa5691 test1
4567207d-4317-4d6e-b25d-7ae3f7fa5691 test3
a7b94a42-fb00-4011-bd5a-4b48e6e578c5 test1
fa7989d7-1708-4a90-9bf6-c91f6cef6952 test2
8a7989d7-5608-5690-9bf6-591f6ce56852 test7
gta7b94a42-fb00-4011-bd5a-4b48e6e578 test6
我想寫一個select語句,那會給我這樣用表A和表B從上面的結果:
編輯:基本上認爲它是一個文件路徑,我想找到路徑ID,
所以基本上對ID:TEST6
路徑將是測試2 - > TEST4 - > TEST5 - > TEST6
GUID | ID | ID_Level_1 | ID_Level_2 | ID_Level_3 | ID_Level_4
---------------------------------------------------------------------------------------------------------
c567207d-5317-4d0e-b24d-5ae3f7fa5691 test1 test1
4567207d-4317-4d6e-b25d-7ae3f7fa5691 test3 test2 test3
a7b94a42-fb00-4011-bd5a-4b48e6e578c5 test1 test1
fa7989d7-1708-4a90-9bf6-c91f6cef6952 test2 test2
8a7989d7-5608-5690-9bf6-591f6ce56852 test7 test2 test7
gta7b94a42-fb00-4011-bd5a-4b48e6e578 test6 test2 test4 test5 test6
如何使用表A和表B獲得此結果,獲取上述結果所需的SQL CALL是什麼?
我明白你想要什麼的基本邏輯,但我想知道爲什麼test3作爲ID的行帶來所有其他ID? 另外,爲什麼test3和test4一起在第2級? – Gidil
Levels的方式,在最終的結果中,它必須從該ID的最頂層父項開始,然後才能到達最低層 –
好的,現在我明白了邏輯。這比一開始我想的要複雜得多。 – Gidil