0

このようなMySQLテーブルがあります ここに画像の説明を入力

そして、次のようなコンボボックスを作成したいと思います:

Hardware (ID 1, Parent 0)
-Child (ID 2, Parent 1)
-Child (ID 3, Parent 1)
--Child (ID 4, Parent 3)

ご覧のとおり、主要なカテゴリには親 ID = 0 があり、残りのカテゴリにはカテゴリの ID に関連付けられた ID があります。

私が疑問に思っていたのは、mysql クエリを介して直接これを行う方法があるかどうかです。もしそうなら、例を挙げていただけますか?

MySQL でいくつかのループを少し試してみましたが、頭の中で意味を成すことができませんでした。

4

1 に答える 1

0

3 つのレベルに制限されている場合は、2 つLEFT JOINの s を作成して、1 つのクエリですべてのデータを取得できます。

SELECT
    t1.id,
    TRIM(
        CONCAT(
            REPEAT('-',IF(t2.id IS NOT NULL,1,0) + IF(t3.id IS NOT NULL,1,0)), 
            ' ', 
            t1.label
        )
    ) AS label
FROM 
    mytable t1
LEFT JOIN
    mytable t2 ON (t1.parent = t2.id)
LEFT JOIN
    mytable t3 ON (t2.parent = t3.id)
ORDER BY
    IFNULL(t3.id, IFNULL(t2.id, t1.id))
于 2013-10-06T22:26:53.503 に答える