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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] requete recursive automatique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] requete recursive automatique

n°1864115
stef_dober​mann
Personne n'est parfait ...
Posté le 20-03-2009 à 16:08:22  profilanswer
 

Bonjour,
 j'ai une table qui me gère des fiche de SAV (rien d'extraordinaire ;) ) Dans cette table il y a champs numfichesavold qui fait référence à un ancien bon de SAV de la même table.
Est -il possible de faire une et une seule requête SQL pour connaître tous les antécédent d'un dossier ?
 
Actuellement je suis obligé de passer par du code (PHP) pour faire cela, je recherche une solution plus propre et plus rapide :)
 
 
Précision si un dossier n'a pas d'antécédent numfichesavold == 0
 
 
Merci :jap:


---------------
Tout à commencé par un rêve...
mood
Publicité
Posté le 20-03-2009 à 16:08:22  profilanswer
 

n°1864156
toji
i am disappoint
Posté le 20-03-2009 à 17:19:07  profilanswer
 

sous oracle tu peux avec un
 
connect by  
start with
 
google pr la syntaxe

n°1864163
guybrush02
Posté le 20-03-2009 à 17:36:33  profilanswer
 

En MySQL, ce n'est pas faisable par contre.

n°1864266
akario
Posté le 21-03-2009 à 00:42:41  profilanswer
 

Si je comprends bien, cela ressemble à un affichage de treeview à profondeur infinie, n'est ce pas ?
 
une simple idée:
pourquoi ne pas avoir une fiche sav qui represente le pere de toutes les fiches sav ordonnées
 
ex:
- Pere_1
  - Fils_1
  - Fils_2
  - Fils_3
- Pere_2
  - Fils_1
  - Fils_2
 
Dans ce cas la gestion reste simple.
 

n°1865096
stef_dober​mann
Personne n'est parfait ...
Posté le 24-03-2009 à 09:43:47  profilanswer
 

je suis sous MySQL :(


---------------
Tout à commencé par un rêve...
n°1865100
stef_dober​mann
Personne n'est parfait ...
Posté le 24-03-2009 à 09:48:52  profilanswer
 

akario a écrit :

Si je comprends bien, cela ressemble à un affichage de treeview à profondeur infinie, n'est ce pas ?


Pas infinie mais presque ;)
 

akario a écrit :


une simple idée:
pourquoi ne pas avoir une fiche sav qui represente le pere de toutes les fiches sav ordonnées
 
ex:
- Pere_1
  - Fils_1
  - Fils_2
  - Fils_3
- Pere_2
  - Fils_1
  - Fils_2
Dans ce cas la gestion reste simple.


 
Existant : Sur chaque fiche de SAV j'ai la possibilité d'avoir l'ancienne s'il en existe une.
Sinon cela voudrais dire que je crée une table( ou un champ dans la table fichesav)  contenant le numéro des autres fiches SAV s'il y en a ?


---------------
Tout à commencé par un rêve...
n°1865103
skeye
Posté le 24-03-2009 à 10:02:04  profilanswer
 

Je pense que son idée était plutôt de créer des fiches fictives contenant une liste de fiches liées entre elles, et de déclarer cette fiche comme "père" de toutes celles de la liste.
Ca te permet de garantir un seul niveau d'arborescence, tout en récupérant toutes les fiches liées...sans toucher à la structure des tables actuelles.


---------------
Can't buy what I want because it's free -
n°1865107
fluminis
Posté le 24-03-2009 à 10:04:40  profilanswer
 

Avec MySql, tu as la fonction GROUP_CONCAT :
http://dev.mysql.com/doc/refman/5. [...] tions.html
 
SELECT champ1, champ2, GROUP_CONCAT( numfichesavold ORDER BY numfichesavold_date DESC SEPARATOR "," )


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1865118
skeye
Posté le 24-03-2009 à 10:15:34  profilanswer
 

fluminis a écrit :

Avec MySql, tu as la fonction GROUP_CONCAT :
http://dev.mysql.com/doc/refman/5. [...] tions.html
 
SELECT champ1, champ2, GROUP_CONCAT( numfichesavold ORDER BY numfichesavold_date DESC SEPARATOR "," )


soit je comprends pas group_concat, soit _ça n'a rien à voir avec la choucroute...[:doc petrus]


---------------
Can't buy what I want because it's free -
n°1865123
fluminis
Posté le 24-03-2009 à 10:21:10  profilanswer
 

Bin, il veut la liste des id des fiches de sav precedentes, avec ca il recupere dans un champ une liste de valeurs des id precedents separés par un ',' (et cadeau bonux, il peut meme les ordonnés par un autre champ.
Reste à faire un group by qui va bien
 
Edit: apres relecture, ca n'a effectivement rien a voir avec la choucroutte :)
Va falloir que je revois ma copie

Message cité 1 fois
Message édité par fluminis le 24-03-2009 à 10:23:06

---------------
http://poemes.iceteapeche.com - http://www.simuland.net
mood
Publicité
Posté le 24-03-2009 à 10:21:10  profilanswer
 

n°1865130
stef_dober​mann
Personne n'est parfait ...
Posté le 24-03-2009 à 10:23:08  profilanswer
 

skeye a écrit :

Je pense que son idée était plutôt de créer des fiches fictives contenant une liste de fiches liées entre elles, et de déclarer cette fiche comme "père" de toutes celles de la liste.
Ca te permet de garantir un seul niveau d'arborescence, tout en récupérant toutes les fiches liées...sans toucher à la structure des tables actuelles.


Ne pas toucher à la structure de la table certes, mais la gestion d'un fichier en plus d'une base de données je ne vois pas l'utilité :??: à programmer ça reste pareil à mes yeux !
Il faut lire le fichier, puis lire chaque fiche fils pour avoir l'historique, Chose que je fais actuellement car quand je lit la dernière fiche SAV,je lit le champs numFicheSAVold s'il est différent de 0, je vais chercher l'ancienne fiche et je refais la même logique jusqu'à trouver numFicheSAVold égale à 0.
Au pire je peut utiliser une table en plus pour faire ça mais un fichier ... :??:


---------------
Tout à commencé par un rêve...
n°1865132
stef_dober​mann
Personne n'est parfait ...
Posté le 24-03-2009 à 10:24:49  profilanswer
 

fluminis a écrit :

Avec MySql, tu as la fonction GROUP_CONCAT :
http://dev.mysql.com/doc/refman/5. [...] tions.html
 
SELECT champ1, champ2, GROUP_CONCAT( numfichesavold ORDER BY numfichesavold_date DESC SEPARATOR "," )


J'y est cru ;)
Merci d'avoir pris le temps d'écrire :)


Message édité par stef_dobermann le 24-03-2009 à 10:26:17

---------------
Tout à commencé par un rêve...
n°1865137
stef_dober​mann
Personne n'est parfait ...
Posté le 24-03-2009 à 10:29:00  profilanswer
 

fluminis a écrit :

Bin, il veut la liste des id des fiches de sav precedentes, avec ca il recupere dans un champ une liste de valeurs des id precedents separés par un ',' (et cadeau bonux, il peut meme les ordonnés par un autre champ.
Reste à faire un group by qui va bien
 
Edit: apres relecture, ca n'a effectivement rien a voir avec la choucroutte :)
Va falloir que je revois ma copie


 
La liste des id de fiche sav précédente je l'ai sans l'avoir complètement :
Je l'ai en lisant le champs numfichesavold chaque fiche sav
mais je ne l'ai pas complètement car si je lit que la première fiche SAV, je ne sais pas combien il y en a derrière.


---------------
Tout à commencé par un rêve...
n°1865138
fluminis
Posté le 24-03-2009 à 10:29:37  profilanswer
 

Ok donc copie revisitée :
Un article vraiment tres interessant sur la maniere de stocker des données hierrarchisées dans une bdd :
http://dev.mysql.com/tech-resource [...] -data.html
 
Par contre, c'est une stucture de table assez particuliere, donc a voir si tu as la possibilité de faire des modif des structures ou non, toujours est-il que l'article est tres interessant.


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
n°1865141
skeye
Posté le 24-03-2009 à 10:31:03  profilanswer
 

stef_dobermann a écrit :


Ne pas toucher à la structure de la table certes, mais la gestion d'un fichier en plus d'une base de données je ne vois pas l'utilité :??: à programmer ça reste pareil à mes yeux !
Il faut lire le fichier, puis lire chaque fiche fils pour avoir l'historique, Chose que je fais actuellement car quand je lit la dernière fiche SAV,je lit le champs numFicheSAVold s'il est différent de 0, je vais chercher l'ancienne fiche et je refais la même logique jusqu'à trouver numFicheSAVold égale à 0.
Au pire je peut utiliser une table en plus pour faire ça mais un fichier ... :??:


 
où ça un fichier?[:pingouino]
Une fiche, ie un enregistrement supplémentaire dans la table.:o


---------------
Can't buy what I want because it's free -
n°1865155
stef_dober​mann
Personne n'est parfait ...
Posté le 24-03-2009 à 10:35:50  profilanswer
 

désolé pour la mauvaise compréhension :)


---------------
Tout à commencé par un rêve...
n°1865171
stef_dober​mann
Personne n'est parfait ...
Posté le 24-03-2009 à 10:42:10  profilanswer
 

mais cela n'est pas possible car dans cette table je ne gère que des fiches SAV réel, l'ID de la table me serre à créer le numéro de dépannage que je donne au client et qui me serre à tracer celui-ci.


---------------
Tout à commencé par un rêve...
n°1865174
skeye
Posté le 24-03-2009 à 10:43:38  profilanswer
 

stef_dobermann a écrit :

mais cela n'est pas possible car dans cette table je ne gère que des fiches SAV réel, l'ID de la table me serre à créer le numéro de dépannage que je donne au client et qui me serre à tracer celui-ci.


 
 
Je vois pas le problème... :??:
Le client aura toujours sa fiche, tu en as juste une fictive sans vrai client derrière, qui te sert à faire le lien avec les autres...non?


---------------
Can't buy what I want because it's free -
n°1865182
stef_dober​mann
Personne n'est parfait ...
Posté le 24-03-2009 à 10:47:59  profilanswer
 

fluminis a écrit :

Ok donc copie revisitée :
Un article vraiment tres interessant sur la maniere de stocker des données hierrarchisées dans une bdd :
http://dev.mysql.com/tech-resource [...] -data.html
 
Par contre, c'est une stucture de table assez particuliere, donc a voir si tu as la possibilité de faire des modif des structures ou non, toujours est-il que l'article est tres interessant.


je n'ai pas un très bon anglais,mais le principe est sympas,mais accès lourd à mettre en place et me ferais revoir mon application complètement  :sweat:
je travail déjà avec 17 tables pour avoir un paramétrage accès fin, et pouvoir ajouter autant de catégorie, fournisseur, marque, priorité, état du produit, ... à l'infinie.
pour au finale n'avoir qu'une base de données la plus propre possible en évitant au maximum les saisie utilisateur.


---------------
Tout à commencé par un rêve...
n°1865194
rufo
Pas me confondre avec Lycos!
Posté le 24-03-2009 à 11:06:26  profilanswer
 

fluminis a écrit :

Ok donc copie revisitée :
Un article vraiment tres interessant sur la maniere de stocker des données hierrarchisées dans une bdd :
http://dev.mysql.com/tech-resource [...] -data.html
 
Par contre, c'est une stucture de table assez particuliere, donc a voir si tu as la possibilité de faire des modif des structures ou non, toujours est-il que l'article est tres interessant.


 
Merci de me l'avoir retrouvé cet article. Il revient régulièrement sur le tapis dès qu'on parle de gestion d'arbo avec MySQL ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1865216
stef_dober​mann
Personne n'est parfait ...
Posté le 24-03-2009 à 11:55:32  profilanswer
 

je crois que je vais rester avec mes X requêtes SQL pour l'instant !!


---------------
Tout à commencé par un rêve...
n°1866106
stef_dober​mann
Personne n'est parfait ...
Posté le 26-03-2009 à 12:20:56  profilanswer
 

Donc hormis une restructuration de ma BDD, il n'y a aucune autre possibilité ??


---------------
Tout à commencé par un rêve...
n°1866177
akario
Posté le 26-03-2009 à 14:00:12  profilanswer
 

stef_dobermann a écrit :

Donc hormis une restructuration de ma BDD, il n'y a aucune autre possibilité ??


 
 
KISS ("Keep it Simple, Stupid" )

n°1866204
kao98
...
Posté le 26-03-2009 à 14:59:06  profilanswer
 

J'avais trouvé cette représentation pour les arbres plutôt intéressante : http://sqlpro.developpez.com/cours/arborescence/


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1866265
rufo
Pas me confondre avec Lycos!
Posté le 26-03-2009 à 15:52:23  profilanswer
 

C'est la même méthode que donnée dans un post précédent et décrite ici : http://dev.mysql.com/tech-resource [...] -data.html
 
Sauf que ton lien est en fr...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1866269
kao98
...
Posté le 26-03-2009 à 15:54:42  profilanswer
 

rufo a écrit :

C'est la même méthode que donnée dans un post précédent et décrite ici : http://dev.mysql.com/tech-resource [...] -data.html
 
Sauf que ton lien est en fr...


Désolé, je n'avais effectivement pas lu tout le sujet :sweat:


Message édité par kao98 le 26-03-2009 à 15:55:15

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1866297
rufo
Pas me confondre avec Lycos!
Posté le 26-03-2009 à 16:38:34  profilanswer
 

Pas grave, les réfractaires à l'anglais vont te remercier :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1869947
stef_dober​mann
Personne n'est parfait ...
Posté le 06-04-2009 à 10:59:02  profilanswer
 

akario a écrit :


 
 
KISS ("Keep it Simple, Stupid" )


Certes mais si je doit modifier ma BDD, je doit tout revoir mon application et je manque gravement de temps !
Donc "KISS" sur ce coup ;)
 
je suis en train de voir une possibilité en passant pas une table supplémentaire pour stocker les différentes fiches,  j'ai fais un jointure avec ma table des actionSAV, et j'arrive à obtenir en 1 requête l'ensemble les actions SAV réalisé sur chaque dossier.


---------------
Tout à commencé par un rêve...
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] requete recursive automatique

 

Sujets relatifs
SQL Server Reporting Services - Utilisation d'une table matriceLenteurs MySql, my.cnf, tuning Sql ?
Sauvegardes sur un cluster de serveurs SQLCreation d'un requete Register vers un serveur sip avec jain-sip
creation interface requete pour utilisateur[resolu]Tenir une requete?
Requête mysqlConstruction d'une requête
[SQL]Probleme requete avec LIMIT 
Plus de sujets relatifs à : [SQL] requete recursive automatique


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