nested sets
またはparent-child
モデルのいずれかを使用する必要があります。
Parent-child
:
typeid 親名
1 0 バイヤー
2 0 売り手
3 0 審判
4 1 電気
5 1 メカニック
SELECT *
FROM mytable
WHERE group IN
(
SELECT typeid
FROM group_types
START WITH
typeid = 1
CONNECT BY
parent = PRIOR typeid
)
は のすべての購入者を選択しますOracle
。
Nested sets
:
typeid 下位 上位 名前
1 1 2 バイヤー
2 3 3 売り手
3 4 4 レフェリー
4 1 1 電気
5 2 2 メカニック
SELECT *
FROM group_types
JOIN mytable
ON group BETWEEN lower AND upper
WHERE typeid = 1
任意のデータベース内のすべての購入者を選択します。
詳細については、この回答を参照してください。
Nested sets
クエリはより簡単ですが、更新が難しく、ツリー構造を構築するのが難しくなります。