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

sortie maintenant:problème requête pour parent_id Mysql

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 

devrait être:

 
    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

Le problème ici est ID et PARENT_ID, le PARENT_ID devrait sortir sous l'ID qu'ils appartiennent à .

+0

pouvez-vous poster vos structures de table pour parent et websiteadmin_pm_categories alors il devrait être assez simple – austinbv

Répondre

0

Je ne suis pas sûr qu'une telle solution soit possible. Je serais très surpris de voir si cela est implémenté par défaut dans n'importe quelle base de données.

Ce type de solution doit être présent dans la logique d'affichage plutôt que les requêtes, car les données est indépendante de la relation entre ID et PARENT_ID

0

Cette requête fait exactement ce que vous voulez, mais celui-ci seulement une hiérarchie parent/enfant à un niveau ... Si vous voulez une imbrication plus profonde, cela devient plus complexe, mais cela peut être fait à un troisième niveau (je l'ai fait plus tôt aujourd'hui).

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