私は2つのテーブルを持っています。 items
とitemItems
itemItems
間の多対多の関係について説明しitems
ます。つまり、 のメンバーはitems
多くの子を持つことができ、それらは多くの子供を持つことができ、さらに多くの子供を持つことができます。
アイテム:
itemID | more stuff ......
1 ...
2 ...
3 ...
4 ...
itemItems:
parentItemID | childItemID
1 2
1 3
2 4
1 つのルート ノードの下にあるすべての子を再帰的に取得するクエリを作成したいと考えています。
これは再帰結合と呼ばれるもので可能だと思いますが、その概念は非常に紛らわしいと思います....(この質問に似ていますが、sqliteではなくsql serverで、多対多では1対多ではありません)
次のようにして、最初のレベル (つまり、1 つのアイテムの下にあるすべての子) を取得できます。
SELECT *
FROM items
INNER JOIN itemItems
ON items.itemID = itemItems.childItemID
WHERE itemItems.parentItemID = 1
これを拡張して、すべての子供の子供などを再帰的に取得するにはどうすればよいですか?