Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/02/2007, 12h12   #1
Membre Expert
 
Inscription : mai 2004
Messages : 1 253
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 1 253
Points : 1 290
Points : 1 290
Par défaut liste des descendants dans une table hiérarchique

Bonjour,

j'ai une table de hiérarchique dont voici la structure sql :

Code :
1
2
3
4
5
6
7
8
9
10
CREATE TABLE `sujets` (
  `id` int(9) UNSIGNED NOT NULL AUTO_INCREMENT,
  `nom` varchar(50) NOT NULL,
  `parent` int(9) UNSIGNED DEFAULT NULL,
  `description` text NOT NULL,
  `uri` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `parent` (`parent`,`uri`),
  FULLTEXT KEY `nom` (`nom`,`description`,`uri`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=52 ;
Le champ 'parent' référence le champ 'id' de cette même table.

J'ai défini un enregistrement racine comme étant un enregistrement dont le parent est NULL. Et je voudrais connaître l'ensemble des enregistrements qui ont pour ancêtre (et non seulement pour parent direct) un élément quelconque (ici racine, mais ça peut ne pas l'être). Attention, il n'y a pas qu'un enregistrement racine. J'ai actuellement six enregistrements racines, mais ce chiffre peut varier.

Aidez-moi car je ne vois pas comment faire de la récursion en SQL pour aller chercher tous les enfants.

Et en annexe, j'utilise une base MySQL 5.1 depuis quelques jours alors que je n'ai pas travaillé avant sur MySQL depuis la v4.0. Est-ce que les clés étrangères fonctionnent correctement maintenant ?

En vous remerciant d'avance,

Olivier
dingoth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 13h27   #2
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Bonjour,

http://sql.developpez.com/arborescence/
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 14h01   #3
Membre Expert
 
Inscription : mai 2004
Messages : 1 253
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 1 253
Points : 1 290
Points : 1 290
Merci, j'ai du louper cette page lorsque j'ai consulté le site avant de poster mon message. Désolé.

Bon, ben, je vais pas chômer aujourd'hui ... :-/
dingoth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 12h25   #4
Membre confirmé
 
Inscription : janvier 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 554
Points : 263
Points : 263
Bonjour,

Même question : j'ai une table PID,ID,LABEL,LEVEL. Chaque ligne est un élément d'une hiérarchie parent-enfant (ou manager-employé), le niveau 0 étant le boss.
Je cherche à écrire une requête qui me récupère tous les subordonnés d'un élément. La doc référencée plus haut concerne des arbres à intervalles et non à niveaux, ce qui ne fonctionne pas dans mon cas. Merci de votre aide,

a+, =)
-=Clement=-

Configuration :
SQL-Server 2005
clementratel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2008, 20h36   #5
Membre confirmé
 
Inscription : janvier 2008
Messages : 554
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 554
Points : 263
Points : 263
Bonjour,

Il semblerait qu'un article réponde à ma question :
http://www.webinade.com/web-developm...-relationshipsJe n'ai pas testé la requête présentée en solution mais ça devrait remplir l'objectif désiré à savoir d'obtenir tous les enregistrements d'une table se situant sous un enregistrement donnée.

a+, =)
-=Clement=-
clementratel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h10.


 
 
 
 
Partenaires

Hébergement Web