Bonjour,
Je dispose d'une table qui représente des données sur plusieurs niveaux hiérarchiques (chaque ligne est reliée à un parent_id).
Mon objectif c'est de retrouver toute l'arborescence à partir d'un noeud racine (where parent_id=NULL).
Le problème que je recontre, c'est que le résultat de mon auto jointure est bon mais au lieu d'avoir des lignes supplémentaires, j'ai de nouvelles colonnes...
On peut prendre l'exemple sur le site de mysql :
http://dev.mysql.com/tech-resources/...ical-data.html
On voit au début de leur article qu'ils retournent n colonnes : lev1, lev2, lev3,...
Or moi , je souhaite avoir uniquement 2 colonnes en résultat :
category_id et parent_id
Extrait du site mysql (exemple)
Résultat recherché :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE category( category_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, parent INT DEFAULT NULL); SELECT * FROM category AS t1 LEFT JOIN category AS t2 ON t2.parent = t1.category_id LEFT JOIN category AS t3 ON t3.parent = t2.category_id LEFT JOIN category AS t4 ON t4.parent = t3.category_id WHERE t1.name = 'ELECTRONICS';
3 colonnes avec n tuples résultat de ma jointure.
avec Oracle, c'est facile : on utilise le "connect by prior"
avec SQL Server, c'est facile : on utilise une vue pour faire de la récursivité (WITH() + UNION ALL)
et avec MySQL ?
ps : http://www.sitepoint.com/article/hie...data-database/
là ils font une requête par niveau... ce que je veux éviter
Partager