1

重複の可能性:
Mysql の再帰?

単一のクエリで子 ID から完全な親情報を取得しようとしています。出来ますか?

例 :

    id  |  ts_name  |  parent_id
    1  |  admin  |  0
    2  |  user  |  0
    3  |  card  |  0
    4  |  pin  |  0
    5  |  venkat  |  0
    7  |  admin_sub  |  1
    18  |  admin_sub2  |  7
    19  |  admin_sub2.1  |  18
    23  |  admin_sub1  |  7
    27  |  admin_sub3  |  7
    30  |  ghgfh  |  26
    37  |  vbnvbn  |  7
    38  |  add_sub_1  |  1
    41  |  admin_sub2.2.1  |  19
    42  |  admin_sub2.1.1.1  |  20
    43  |  admin_sub2.1.1.1  |  19

だから私が得ようとしているのは

child id = 19 を指定すると、18,7,1 が返されます。

どうやってするか?

4

2 に答える 2

1

SQL サーバー (http://en.wikipedia.org/wiki/PL/SQL) で plsql 言語で関数を作成する必要があります。構文はよくわかりませんが、全体的なアルゴリズムは次のようになります。

function getParents(id):
    returns varchar(1000);
    IS result varchar(1000);
    begin
        while (id ! = 0)
            id = getParent(id);
            result = id + ', ';

        removeLastComma(result);
        return result;
    end

function getParent(parent):
    returns varchar(20);
    IS result varchar(20)
    begin
        select id into result from example_table where parent_id = parent
        return result
    end

removeLastComma(string):
     // cut last two characters of the string
     // return processed string

pl/sql チュートリアル: http://plsql-tutorial.com/plsql-functions.htm

おそらくコピー&ペーストのソリューションとしては機能しないでしょうが、それが有用なスターターになることを願っています.

于 2012-07-05T13:42:14.203 に答える
0

残念ながら、テーブル構造を変更するか、多数のクエリを実行しないと、MySQL でこれを行うことはできません。

https://stackoverflow.com/a/4345944/574303を参照してください

于 2012-07-05T13:30:29.230 に答える