は、私はすべて特定のCATEGORY_IDの両親の上に示した単一のクエリをしたい特定のカテゴリIDのすべての親ノートを特定のSQLテーブルから取得するにはどうすればよいですか?ここ
.....私カテゴリテーブルです。例:クエリで私7は、そのようになる結果= CATEGORY_ID定義する場合:
7携帯用電子機器6
6 ELECTRONICS 1
1の親をヌル次にクエリが終了します。要するに、私はただ特定のcategory_idのすべての親を欲しい。
ありがとうございます。
は、私はすべて特定のCATEGORY_IDの両親の上に示した単一のクエリをしたい特定のカテゴリIDのすべての親ノートを特定のSQLテーブルから取得するにはどうすればよいですか?ここ
.....私カテゴリテーブルです。例:クエリで私7は、そのようになる結果= CATEGORY_ID定義する場合:
7携帯用電子機器6
6 ELECTRONICS 1
1の親をヌル次にクエリが終了します。要するに、私はただ特定のcategory_idのすべての親を欲しい。
ありがとうございます。
set @category := 7
;
select l.n
,elt(l.n,c1.category_id,c2.category_id,c3.category_id,c4.category_id,c5.category_id,c6.category_id,c7.category_id,c8.category_id,c9.category_id) as category_id
,elt(l.n,c1.name,c2.name,c3.name,c4.name,c5.name,c6.name,c7.name,c8.name,c9.name) as parent_name
from category as c1
left join category as c2 on c2.category_id = c1.parent
left join category as c3 on c3.category_id = c2.parent
left join category as c4 on c4.category_id = c3.parent
left join category as c5 on c5.category_id = c4.parent
left join category as c6 on c6.category_id = c5.parent
left join category as c7 on c7.category_id = c6.parent
left join category as c8 on c8.category_id = c7.parent
left join category as c9 on c9.category_id = c8.parent
cross join ( select 1 as n
union all select 2
union all select 3
union all select 4
union all select 5
union all select 6
union all select 7
union all select 8
union all select 9
) l
where c1.category_id = @category
and l.n <=
case
when c9.category_id is not null then 9
when c8.category_id is not null then 8
when c7.category_id is not null then 7
when c6.category_id is not null then 6
when c5.category_id is not null then 5
when c4.category_id is not null then 4
when c3.category_id is not null then 3
when c2.category_id is not null then 2
when c1.category_id is not null then 1
end
;
それは単一の親を与えるだけです、私が7を入力すると、7の親が6になりますが、7の親が6であり、6の親が1のように、すべての親が欲しいです。 –
いいえ、すべての親を与えます。内側のクエリを実行して確認してください。ユーザーが1,2,6,7を取得する必要があります。 –
ユーザーが7を入力すると、7の直接の親を表示する必要があります。 –
出力をどのように見たいですか? –
特定のcategory_idの上のすべての親を示す単一のクエリが必要です。例:問合せでcategory_id = 7を定義すると、結果は次のようになります。7 PORTABLE ELECTRONICS 6 ..... 6 ELECTRONICS 1 ... 1の親がNULLで、問合せが終了します。要するに、私はただ特定のcategory_idのすべての親を欲しい。 –
http://dba.stackexchange.com/questions/7147/find-highest-level-of-a-hierarchical-field-with-vs-without-ctesをご覧ください –