2013-06-27 5 views
-1

J'ai mis des résultats comme celui-ciComment trier les résultats en affichant ID parent d'abord, puis tous les id enfants en dessous

ID >> Parent 
1 >> 0 
2 >> 0 
3 >> 0 
4 >> 1 
5 >> 1 
6 >> 2 
7 >> 1 
8 >> 0 
9 >> 3 
10 >> 0 

Je veux trier le dossier d'une manière où j'afficher les enregistrements en ayant parent et en dessous de tous les enfants. Ainsi, les résultats ressembleront cette

1 >> 0 
4 >> 1 
5 >> 1 
7 >> 1 
2 >> 0 
6 >> 2 
3 >> 0 
9 >> 3 
8 >> 0 
10 >> 0 

Comment trier les enregistrements dans cet ordre à l'aide de MySQL?

Merci

+1

double possible de [MySQL SELECT arbre ID Parent] (http://stackoverflow.com/questions/5688376/mysql-select-tree-parent-ids). – Aiias

+0

J'ai essayé Trier par ID, parent qui n'a pas fonctionné. Ont également essayé ORDER BY COALESCE (parent, id), parent, id. cela n'a pas fonctionné – Mike

Répondre

1

MySQL ne supporte pas les requêtes récursives. Mais si un parent ne peut pas avoir un parent (comme dans vos données exemple), vous pouvez utiliser quelque chose comme ceci:

SELECT * 
FROM  mytable 
ORDER BY CASE WHEN Parent=0 THEN ID ELSE Parent END, ID 

S'il vous plaît voir violon here.

+0

Cela a fonctionné en effet. une raison connue pourquoi MySQL ne supporte pas les requêtes récursives? Merci beaucoup – Mike

0

Ou peut-être ...

SELECT id,COALESCE(parent,id) p FROM my_table ORDER BY p,id; 
Questions connexes