|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 115 ![]() |
Je suis en train de bloquer sur un problème d'ordre stocké en relatif.
Je vais simplifier mon problème en ne gardant que le strict minimum J'ai une table qui sert à organiser mes étapes: Code :
Donc à priori: 210->220->104->320->2 J'ai bien une solution récursive en utilisant le language dans lequel je développe. Mais c'est assez couteux... Avez-vous un système de requete unique à me conseiller? |
||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Pas sous MySQL, malheureusement. Sauf à passer par une fonction utilisateur, mais je doute que les performances soient meilleures qu'en passant par le langage dans lequel tu développes. ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 115 ![]() |
C'est bien ce que je craignais.
Une fonction récursive en MySql va être trop couteuse. Je crois que je vais devoir faire le 'tri' sur la couche Supérieur (langage Delphi) Merci quand même. Et je reste ouvert à toute proposition |
|
|
00
|
|
|
#4 | |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 115 ![]() |
Bonjour ced,
Je me demandais par curiosité si vous pouviez me dire 2 ou 3 mots sur votre phrase: Citation:
|
|
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
Salut,
C'est vrai que sous un plus gros sgbd genre oracle, tu aurais pu faire une requête hiérarchique pour résoudre ton pb... ici tu dois donc faire du récursif soit côté mysql (255 niveaux de récursion maxi) grâce aux procédures stockées (les fonctions stockées ne permettent pas la récursion actuellement), soit côté langage (php par exemple), soit en faisant un mixe des 2 pour améliorer les performances... Idée: En faisant bosser mysql avec une récursion tu va minimiser les échanges langage-mysql. Mais comme tu as la limitation des 255 lvl de récursion, selon le nombre d'étapes que tu as eu:
La procédure stockée: 3 astuces:
Code sql :
à chaque appel tu obtiens donc le nombre d'étapes du chemin et la chaine le décrivant que tu n'a qu'à exploser en tableau en te basant sur la ',' comme séparateur..., si tu as au moins 254 éléments tu peux alors relancer le traitement sur le dernier (ne pas oublier de le supprimer du tableau que tu obtiendras pour ne pas avoir de doublon avec le tableau précédent)... Voilà une idée par exemple
|
||
|
|
10
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 115 ![]() |
Whaou!
Je relie tout ça, et l'essaye. Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com