2010-12-14 16 views
0
SELECT * FROM `websiteadmin_pm_categories` WHERE `username`='demo' LIMIT 0, 30 ; 

出力:MySQLのクエリPARENT_ID順序問題

id parent_id active_en name_en description_en link_en username 
47 0 1 DVD  demo 
48 0 1 Spill  demo 
49 0 1 Utstyr  demo 
50 49 1 PC  demo 
51 47 1 Barnefilmer demo 

は次のようになります。

 
    id parent_id active_en name_en description_en link_en username 
    47 0 1 DVD  demo 
    51 47 1 Barnefilmer demo 
    48 0 1 Spill  demo 
    49 0 1 Utstyr  demo 
    50 49 1 PC  demo

ここでの問題は、IDとPARENT_IDは、PARENT_IDは、彼らが属するIDの下に出てくる必要がありますです。

+0

parentとwebsiteadmin_pm_categoriesのテーブル構造を投稿することはできますか? – austinbv

答えて

0

このような解決策が可能かどうかはわかりません。私はこれがデフォルトでどのデータベースにも実装されているかどうかを見るとかなり驚くでしょう。データは、このクエリは、あなたはそれがしたいんまさにIDとPARENT_ID

0

との関係とは無関係ですが、これが唯一のないよう

この種のソリューションは、むしろクエリよりも表示ロジック中に存在すべきです1レベルの親/子階層...より深いネスティングが必要な場合、それはより複雑になりますが、第3レベルまで行うことができます(私は実際にこれを今日より早く行いました)。

select * 
    from 
     websiteadmin_pm_categories w1 
     left join websiteadmin_pm_categories w2 
      on w1.parent_id = w2.id 
    WHERE 
     w1.username = 'demo' 
    order by 
     case when w1.parent_id = 0 then w1.id else w1.parent_id end, 
     w1.parent_id