Poster une réponse à un sujet: SQL - Récursivité (sort of)
Attention, ce sujet est un sujet ancien (3248 jours sans réponse)
Pinou
Pas mal comme solution.
Je n'avais jamais utilisé de CTE avec UNION ALL.
Je viens de l'appliquer dans une DB pour améliorer requête moins propre et légèrement buguée.
Mais puisque tu n'en a plus besoin, j'ai pas trop le courage d'essayer de le refaire pour ta tale de recette.
Je n'avais jamais utilisé de CTE avec UNION ALL.
Je viens de l'appliquer dans une DB pour améliorer requête moins propre et légèrement buguée.
Mais puisque tu n'en a plus besoin, j'ai pas trop le courage d'essayer de le refaire pour ta tale de recette.
![:smile: :smile:](images/smileys/smile.gif)
Schnick
Il apprécie pas les guillemets. Mais c'est amusant qu'en prévisionnage çà passe.
![:bombe: :bombe:](images/smileys/bombe.gif)
zion
c'est [url = lelien ] plop [ / url ]
Schnick
Bonsoir,
Je pense que la réponse se trouve au moins à cette adresse: http://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query
Il y a bcp d'autres exemples. Le mots clés sont: mysql requête récursive arborescence
Je pense que la réponse se trouve au moins à cette adresse: http://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query
Il y a bcp d'autres exemples. Le mots clés sont: mysql requête récursive arborescence
Oui j'ai commencé par Google et donc ici ou là mais n'étant pas un expert je me suis retrouvé bloqué. Je n'arrive pas à appliquer les exemples à mon cas pratique.
Bon, sachant que je devais mettre les données à disposition d'un cube cognos, je vais les donner en l'état et c'est lui qui va s'occuper de la récursivité. Donc problème résolu pour le client.
Mais je vais quand même essayer de trouver comment faire.
![:banzai: :banzai:](images/smileys/banzai.gif)
EDIT : c'est marrant dans la prévisualisation le lien fonctionne mais pas dans l'affichage final
![:roll: :roll:](images/smileys/sarcastic.gif)
philanthrope
Bonsoir,
Je pense que la réponse se trouve au moins à cette adresse: http://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query
Il y a bcp d'autres exemples. Le mots clés sont: mysql requête récursive arborescence
Je pense que la réponse se trouve au moins à cette adresse: http://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query
Il y a bcp d'autres exemples. Le mots clés sont: mysql requête récursive arborescence
Schnick
T'as pas des millions de recettes, si?
Ce que je ferais, un array statique, pour taille le plus grand id de recette. Ca va bouffer qqs KB de mémoire, pas grave. Tu y charges chaque recette avec un array pour les ingrédients, et un array pour les ids des sous recettes.
Puis, tu te fais un array avec les produits, tous à 0, même chose, de la taille du plus grand id, avec ce que tu as besoin pour ton rapport déjà lié (le nom du produit, etc).
Puis tu fais simplement ton query des ventes, et pour chaque ligne, tu parcours ton array.
Je te promets que ce sera ultra rapide, même avec des dizaines de milliers de rows, vu que tu t'indexes toi même ton truc grâce à tes ids.
Sinon tu peux le faire en SQL pur, mais vu que tu as pas de certitude de ton degré de récursivité, soit tu t'en forces un, soit t'es parti pour la gloire.
Ce que je ferais, un array statique, pour taille le plus grand id de recette. Ca va bouffer qqs KB de mémoire, pas grave. Tu y charges chaque recette avec un array pour les ingrédients, et un array pour les ids des sous recettes.
Puis, tu te fais un array avec les produits, tous à 0, même chose, de la taille du plus grand id, avec ce que tu as besoin pour ton rapport déjà lié (le nom du produit, etc).
Puis tu fais simplement ton query des ventes, et pour chaque ligne, tu parcours ton array.
Je te promets que ce sera ultra rapide, même avec des dizaines de milliers de rows, vu que tu t'indexes toi même ton truc grâce à tes ids.
Sinon tu peux le faire en SQL pur, mais vu que tu as pas de certitude de ton degré de récursivité, soit tu t'en forces un, soit t'es parti pour la gloire.
L'idée est séduisante, faut juste que je me renseigne sur le comment faire un array.
![:banzai: :banzai:](images/smileys/banzai.gif)
Puis faut des arrays deux dimensions, recette | sous recette et recette | ingredients, non. Sinon je parcourerais un table sans référence à la recette et je ne saurai pas faire le lien entre le produit et la recette.
Pinou
OK, donc en effet, j'avais rien compris
Je pensais que tu voulais sortir la liste de "toutes les recettes composées uniquement d'ingrédients."
Je vais relire pour essayer de comprendre.
![:tinostar: :tinostar:](images/smileys/tinostar.gif)
Je pensais que tu voulais sortir la liste de "toutes les recettes composées uniquement d'ingrédients."
Je vais relire pour essayer de comprendre.
zion
T'as pas des millions de recettes, si?
Ce que je ferais, un array statique, pour taille le plus grand id de recette. Ca va bouffer qqs KB de mémoire, pas grave. Tu y charges chaque recette avec un array pour les ingrédients, et un array pour les ids des sous recettes.
Puis, tu te fais un array avec les produits, tous à 0, même chose, de la taille du plus grand id, avec ce que tu as besoin pour ton rapport déjà lié (le nom du produit, etc).
Puis tu fais simplement ton query des ventes, et pour chaque ligne, tu parcours ton array.
Je te promets que ce sera ultra rapide, même avec des dizaines de milliers de rows, vu que tu t'indexes toi même ton truc grâce à tes ids.
Sinon tu peux le faire en SQL pur, mais vu que tu as pas de certitude de ton degré de récursivité, soit tu t'en forces un, soit t'es parti pour la gloire.
Ce que je ferais, un array statique, pour taille le plus grand id de recette. Ca va bouffer qqs KB de mémoire, pas grave. Tu y charges chaque recette avec un array pour les ingrédients, et un array pour les ids des sous recettes.
Puis, tu te fais un array avec les produits, tous à 0, même chose, de la taille du plus grand id, avec ce que tu as besoin pour ton rapport déjà lié (le nom du produit, etc).
Puis tu fais simplement ton query des ventes, et pour chaque ligne, tu parcours ton array.
Je te promets que ce sera ultra rapide, même avec des dizaines de milliers de rows, vu que tu t'indexes toi même ton truc grâce à tes ids.
Sinon tu peux le faire en SQL pur, mais vu que tu as pas de certitude de ton degré de récursivité, soit tu t'en forces un, soit t'es parti pour la gloire.
Schnick
Je dois sortir des ventes par ingrédient au final de mon rapport.
J'ai un table avec les ventes de produits : x steak
Je dois avoir : x tranches steak, x grammes de haricots, etc.
EDIT : La table des ventes n'est évidemment pas la même que la table contenant les lignes de recettes.
Compter je veux bien mais je n'arrive pas à faire le saut (intellectuel) de comment va être pris en compte la recette de recette de recette de recette. Je ne peux pas compter le nombre d’occurrences puisque chaque recette peut être rappelée par n'importe quelle autre recette.
Mais c'est peut-être moi auquel il manque une case
J'ai un table avec les ventes de produits : x steak
Je dois avoir : x tranches steak, x grammes de haricots, etc.
EDIT : La table des ventes n'est évidemment pas la même que la table contenant les lignes de recettes.
Compter je veux bien mais je n'arrive pas à faire le saut (intellectuel) de comment va être pris en compte la recette de recette de recette de recette. Je ne peux pas compter le nombre d’occurrences puisque chaque recette peut être rappelée par n'importe quelle autre recette.
Mais c'est peut-être moi auquel il manque une case
![:smile: :smile:](images/smileys/smile.gif)
zion