1

同じテーブルの ID 列を参照する「親」という名前の列があるとします。空でも数値でもかまいません。空の場合は、レコードに親がないことを意味します。

例:

ID  name  parent
1   A
2   B     1
3   C     2
4   D     2

CI の祖先を取得するには、次の 2 つのクエリを作成します。

SELECT parent FROM table WHERE id = 2

SELECT parent FROM table WHERE id = 1

次に、空の親を取得するので、1 が祖先であることがわかります。

単一のクエリでこれを行うことが可能かどうか疑問に思っていました:)

4

2 に答える 2

-1

はい、再帰的 CTEの使用があります

本質的にそうなるでしょう。これは疑似コードですが、90% の結果が得られます。テーブル定義をいくつか教えていただければ、もっと多くのことができます

;with coolCTE as (
SELECT id,NAME,1 as level
FROM tableX
where parent is null
union all
select id,name,level + 1
from tablex as y 
inner join coolcte as c on y.id = c.parentid
where y.parentid is not null
)
于 2013-10-08T18:07:41.077 に答える