requete recursive automatique [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 20-03-2009 à 17:19:07
sous oracle tu peux avec un
connect by
start with
google pr la syntaxe
Marsh Posté le 21-03-2009 à 00:42:41
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.
Marsh Posté le 24-03-2009 à 09:43:47
je suis sous MySQL
Marsh Posté le 24-03-2009 à 09:48:52
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 : |
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 ?
Marsh Posté le 24-03-2009 à 10:02:04
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.
Marsh Posté le 24-03-2009 à 10:04:40
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 "," )
Marsh Posté le 24-03-2009 à 10:15:34
fluminis a écrit : Avec MySql, tu as la fonction GROUP_CONCAT : |
soit je comprends pas group_concat, soit _ça n'a rien à voir avec la choucroute...
Marsh Posté le 24-03-2009 à 10:21:10
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
Marsh Posté le 24-03-2009 à 10:23:08
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. |
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 ...
Marsh Posté le 24-03-2009 à 10:24:49
fluminis a écrit : Avec MySql, tu as la fonction GROUP_CONCAT : |
J'y est cru
Merci d'avoir pris le temps d'écrire
Marsh Posté le 24-03-2009 à 10:29:00
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. |
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.
Marsh Posté le 24-03-2009 à 10:29:37
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.
Marsh Posté le 24-03-2009 à 10:31:03
stef_dobermann a écrit : |
où ça un fichier?
Une fiche, ie un enregistrement supplémentaire dans la table.
Marsh Posté le 24-03-2009 à 10:35:50
désolé pour la mauvaise compréhension
Marsh Posté le 24-03-2009 à 10:42:10
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.
Marsh Posté le 24-03-2009 à 10:43:38
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?
Marsh Posté le 24-03-2009 à 10:47:59
fluminis a écrit : Ok donc copie revisitée : |
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
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.
Marsh Posté le 24-03-2009 à 11:06:26
fluminis a écrit : Ok donc copie revisitée : |
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
Marsh Posté le 24-03-2009 à 11:55:32
je crois que je vais rester avec mes X requêtes SQL pour l'instant !!
Marsh Posté le 26-03-2009 à 12:20:56
Donc hormis une restructuration de ma BDD, il n'y a aucune autre possibilité ??
Marsh Posté le 26-03-2009 à 14:00:12
stef_dobermann a écrit : Donc hormis une restructuration de ma BDD, il n'y a aucune autre possibilité ?? |
KISS ("Keep it Simple, Stupid" )
Marsh Posté le 26-03-2009 à 14:59:06
J'avais trouvé cette représentation pour les arbres plutôt intéressante : http://sqlpro.developpez.com/cours/arborescence/
Marsh Posté le 26-03-2009 à 15:52:23
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...
Marsh Posté le 26-03-2009 à 15:54:42
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 |
Désolé, je n'avais effectivement pas lu tout le sujet
Marsh Posté le 26-03-2009 à 16:38:34
Pas grave, les réfractaires à l'anglais vont te remercier
Marsh Posté le 06-04-2009 à 10:59:02
akario a écrit : |
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.
Marsh Posté le 20-03-2009 à 16:08:22
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
---------------
Tout à commencé par un rêve...