Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
995 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [MySQL] récupérer le premier élément d'une structure hiérarchique...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] récupérer le premier élément d'une structure hiérarchique...

n°529355
duch
Posté le 02-10-2003 à 15:46:27  profilanswer
 

Mon sujet n'est pas clair, normal :D
 
en fait c'est très simple mais je ne sais pas comment l'expliquer en une phrase.
 
soit la table "rubrique" suivante :
 
id : INT auto-incrément, unique
rub : INT
txt : TEXT
 
et le début de la table suivant :
 
id       rub      txt
 
1        0        rubrique 1
2        0        rubrique 2
3        1        sous-rubrique 1 de la rubrique 1
4        1        sous-rubrique 2 de la rubrique 1
5        1        sous-rubrique 3 de la rubrique 1
6        2        sous-rubrique 1 de la rubrique 2
 
et ainsi de suite où le premier chiffre est l'id unique de chaque rubrique et le deuxième l'id de la rubrique qui la contient.
 
 
ce que j'aimerais faire, c'est pour un id donné récupérer l'id de la toute première rubrique.
 
Par exemple pour la rubrique 6 ça me donnerait 2 (là c'est facile il n'y en a que 2, mais pour la rubrique 429 ça se corse)
 
 
je sais le faire en utilisant toujours la même requête de manière récursive, mais est-ce possible avec une seule requête???
 
 
PS : j'utilise MySQL 3.23.49


Message édité par duch le 02-10-2003 à 15:50:34
mood
Publicité
Posté le 02-10-2003 à 15:46:27  profilanswer
 

n°530006
_maximus_
Goret ptit con ^_^
Posté le 03-10-2003 à 01:22:27  profilanswer
 

j'ai pas tout compris! [:_maximus_]
 
un simple select te donne la rubrique associée... pour avoir la premiere tu joues avec les order by...


Message édité par _maximus_ le 03-10-2003 à 01:22:53

---------------
Ptit con de goret je t'emmerde ^_^
n°530038
jagstang
Pa Capona ಠ_ಠ
Posté le 03-10-2003 à 08:49:15  profilanswer
 

en théorie, tu devrais avoir 2 tables. une rubrique, une sous rubrique en 1,n
 
ça peut t'éviter de te prendre la tête...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°530040
duch
Posté le 03-10-2003 à 09:01:05  profilanswer
 

le problème est que je n'ai pas qu'une seule sous rubrique, je peux avoir 5,8,10,20... rubriques imbriquées, donc le fait d'avoir 2 tables n'y change rien.
 
la question est quand je suis dans la 20è sous-rubrique d'une rubrique, comment connaitre l'id de cette rubrique sans faire 20 select?

n°530195
_maximus_
Goret ptit con ^_^
Posté le 03-10-2003 à 12:08:57  profilanswer
 

duch a écrit :

le problème est que je n'ai pas qu'une seule sous rubrique, je peux avoir 5,8,10,20... rubriques imbriquées, donc le fait d'avoir 2 tables n'y change rien.
 
la question est quand je suis dans la 20è sous-rubrique d'une rubrique, comment connaitre l'id de cette rubrique sans faire 20 select?


 
Avec 2 tables tu selectionnes en un seul select...


---------------
Ptit con de goret je t'emmerde ^_^
n°530227
Freekill
Electron libre…
Posté le 03-10-2003 à 12:42:53  profilanswer
 

_Maximus_ a écrit :


 
Avec 2 tables tu selectionnes en un seul select...  


 
Je ne vois pas comment, à moins de stocker le "chemin" complet de la sous-rubrique dedans.
 
Et à ce moment là tu peux aussi le faire dans la même table.
 
Genre chemin = "rub01-ele01\rub04-ele02\rub09-ele04".
 
Sinon faut faire du récursif?


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
n°530239
_maximus_
Goret ptit con ^_^
Posté le 03-10-2003 à 13:04:13  profilanswer
 

Freekill a écrit :


 
Je ne vois pas comment, à moins de stocker le "chemin" complet de la sous-rubrique dedans.
 
Et à ce moment là tu peux aussi le faire dans la même table.
 
Genre chemin = "rub01-ele01\rub04-ele02\rub09-ele04".
 
Sinon faut faire du récursif…


 
 
select * from table1, table2 WHERE table1.idrub=table2.idrub;
 
un truc du style


---------------
Ptit con de goret je t'emmerde ^_^
n°530243
Freekill
Electron libre…
Posté le 03-10-2003 à 13:07:58  profilanswer
 

_Maximus_ a écrit :


 
 
select * from table1, table2 WHERE table1.idrub=table2.idrub;
 
un truc du style


 
Je pense que tu n'as pas tout suivi : il veut remonter jusqu'à la racine de l'arborescence, avec un nombre indéterminé de sous-rubriques entre celle-ci et la sous-rubrique choisie.


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
n°530329
Betcour
Building better worlds
Posté le 03-10-2003 à 14:47:55  profilanswer
 

Ben il faut faire une fonction récursive qui remonte l'arbre, y'a pas d'autre méthode.

n°530343
Freekill
Electron libre…
Posté le 03-10-2003 à 14:53:12  profilanswer
 

Betcour a écrit :

Ben il faut faire une fonction récursive qui remonte l'arbre, y'a pas d'autre méthode.


 
Si, stocker le chemin?  :sarcastic:


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
mood
Publicité
Posté le 03-10-2003 à 14:53:12  profilanswer
 

n°530638
_maximus_
Goret ptit con ^_^
Posté le 03-10-2003 à 20:44:21  profilanswer
 

Freekill a écrit :


 
Je pense que tu n'as pas tout suivi : il veut remonter jusqu'à la racine de l'arborescence, avec un nombre indéterminé de sous-rubriques entre celle-ci et la sous-rubrique choisie.


 
 
Ahhhhhhhhhhh ok....
Bon ben autant pour moi...
 
sinon oui le recursif est une solution.
 
Mais perso je vois pas l'interet d'avoir plus de 3, max 4 sous section dans un site...  
 
Perso je m'en sort toujours avec 2, rarement 3.
 
Donc  a quoi bon faire du recursif pour si peut, ca allourdi mechament le code, je pense...
 
a+


---------------
Ptit con de goret je t'emmerde ^_^
n°531127
duch
Posté le 04-10-2003 à 13:45:26  profilanswer
 

ça n'est pas pour un site...
 
mais si y'a pas d'autre moyen que le récursif, tant pis :(

n°531130
Mara's dad
Yes I can !
Posté le 04-10-2003 à 13:51:07  profilanswer
 

Si tu te pose la question pour un niveau intermédiaire, pas d'autre solution que la récursion ou le stockage du chemin complet.
 
Mais si, pour une sous rubrique de niveau N, tu ne te pose que la question de savoir quelle est la rubrique de niveau 1, la solution est simple : Ajouter un champs Racine.
 
id : INT auto-incrément, unique  
rub : INT  
racine : INT
txt : TEXT  
 
et le début de la table suivant :  
 
id       rub      racine     txt  
 
1        0        0          rubrique 1  
2        0        0          rubrique 2  
3        1        0          sous-rubrique 1 de la rubrique 1  
4        1        0          sous-rubrique 2 de la rubrique 1  
5        2        2          sous-rubrique 1 de la rubrique 2
6        5        2          sous-rubrique 1 de la rubrique 5
 
Ce qui est un cas particulier du stockage du chemin complet :D


Message édité par Mara's dad le 04-10-2003 à 13:55:12

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [MySQL] récupérer le premier élément d'une structure hiérarchique...

 

Sujets relatifs
mssql -> mysqlComment recuperer une notification d'insertion CD en java?
Methode pour modifier un enreg de MySQL ?[PHP/MySQL] Apporter une modification à la DB
[MySQL + PHP] Récupérer ne nb d'elements effacés par DELETE[MySQL] securite sur le load data
Récupérer les infos ou sauvegarder une main frame[MySQL] lister des valeurs qui sont dans T1 mais pas dans T2
Récupérer le FSB et/ou le coef mult. d'un CPU ... 
Plus de sujets relatifs à : [MySQL] récupérer le premier élément d'une structure hiérarchique...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR