2017-05-08 12 views
0

私は初心者です。parent_idに基づいて再帰的なクエリを実装しようとしています。mysql select recursive parent id error 'where句'の不明な列

表は次のとおりです:

create table department (id int, name varchar(100), id_parent int null); 
insert into department values (1, 'DEPARTMENT 1', NULL); 
insert into department values (2, 'DEPARTMENT 2', 1); 
insert into department values (3, 'DEPARTMENT 3', 2); 
insert into department values (4, 'DEPARTMENT ABCD', 3); 
insert into department values (5, 'DEPARTMENT X', NULL); 
insert into department values (6, 'DEPARTMENT Y', 5); 
insert into department values (7, 'DEPARTMENT Z', 6); 
insert into department values (8, 'DEPARTMENT AB', 7); 

とクエリ:

は私が古いの答えで良い働いた例を発見した

SELECT D2.id, D2.name, D2.id_parent 
FROM (
    SELECT 
     @d AS _id, 
     (SELECT @d := id_parent FROM department WHERE id = _id) AS id_parent, 
     @l := @l + 1 AS level 
    FROM 
     (SELECT 
      @d := (select id from department where name like 'DEPARTMENT AB'), 
      @l := 0 
     ) initial_level, 
     department D 
    WHERE @d <> 0 
) D1 
JOIN department D2 ON D1._id = D2.id 
ORDER BY D1.level DESC; 

私が選択したことを例そのため、ここにデモのデモがあります: http://sqlfiddle.com/#!9/f182fb/4

問題: だから、オンラインでsqlfiddleその作業良いが、私はこのエラーました、私のPCでそれらを試してみました場合:で 不明な列「_id」「をwhere句」

私はMYSQL5でWAMP上で実行されています.7.9

答えて

0

私は変数@idを使用してそれらを解決しました。

(SELECT @d := id_parent FROM department WHERE id = @d) AS id_parent 
関連する問題