IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

problème sur une Fonction récursive


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Par défaut problème sur une Fonction récursive
    Bonjour

    Voici ma table ( exemple) :

    Voiture
    Voiture Pneu 4
    pneu Ecrou 3

    Je voudrai avoir le resultat
    Voiture ecrou 12

    Voici ma requete réelle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    WITH tree(No_,comp,[Production BOM No_],level,Qty,qty2,[Version Code])AS (
     
    SELECT     a.No_, b.No_ + b.[Version Code]  AS comp, b.[Production BOM No_],0,b."Quantity per",b.[Version Code]
    FROM         table$Item as a  JOIN
                          [table$Production BOM Line] as  b ON 
                          a.[Production BOM No_] = b.[Production BOM No_]
    WHERE     (a.No_= @article)  
     
    UNION ALL 
     
     
    SELECT     c.No_, d.No_+ d.[Version Code]  AS comp, d.[Production BOM No_]  ,t.level + 1,d."Quantity per",d.[Version Code]
    FROM         table$Item as c  JOIN
                          [table$Production BOM Line] as d ON 
                          c.[Production BOM No_] = d.[Production BOM No_] 
    INNER JOIN tree t ON t.comp=c.No_ )
     
     
    SELECT @article,tree.* ,0 as zero  FROM tree,table$Item where (comp NOT LIKE 'p_%') And [Version Code]='' AND tree.comp =table$Item.No_ ORDER BY tree.level
    Je n'arrive pas à remonter la valeur d."Quantity per" dans l'autre requete.
    Merci de votre aide.

    bernie

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Elle est bizzare votre requête.
    Vous n'êtes pas fammilier avec les CTE, n'est-ce pas ?

    La première partie de votre CTE est le point de départ.
    Donc les quantités devraient y être 1 (le point de départ est 1 voiture, 1 pneu, etc...) et il n' y a donc pas besoin d'y faire de jointure avec votre "BOM".

    La seconde partie de votre CTE "devrait" avoir comme première clause FROM : FROM [votre_cte].
    En effet, votre point de départ y est "pour toutes les lignes de l'itération précédentes..." et il me semble que vous n'avez pas bien compris ça (ou alors vous aimez écrire l'envers à).
    Dans votre itération vous deviez mutliplier (je ne vois aucun x) la quantité du "parent" avec la quantité de l' "enfant".

  3. #3
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Par défaut
    Citation Envoyé par Sergejack Voir le message
    Dans votre itération vous deviez mutliplier (je ne vois aucun x) la quantité du "parent" avec la quantité de l' "enfant".
    C'est exactement ce que je n'arrive pas à faire.
    Dans la 2eme requete comment s'appelle la quantité du parent ??

    Concernant le reste, il est vraiment que je ne parle que d'une seule table dans mon exemple , mais qu'en reel j'en utilise 2 ( article et nomenclature).
    De l'article ( parent) je vais chercher la nomenclature.
    Et de la nomenclature je vais chercher les articles enfants.
    Merci de vos reponses.

    Bernie

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour
    Citation Envoyé par bernie74 Voir le message
    Dans la 2eme requete comment s'appelle la quantité du parent ??
    La table parent est tree, mais vous lui donnez l'alias t.
    cependant, dans votre CTE, vous définissez 7 colonnes, mais il n'y en a que 6 dans l'ancrage de votre CTE.
    A première vue, il vous manque Qt2... justement la colonne que vous cherchez a récupérer dans la partie récursive.

    Je pense qu'il vous faut utiliser la colonne quantité deux fois dans l'ancrage mais...

    Concernant le reste, il est vraiment que je ne parle que d'une seule table dans mon exemple , mais qu'en reel j'en utilise 2 ( article et nomenclature).
    De l'article ( parent) je vais chercher la nomenclature.
    Et de la nomenclature je vais chercher les articles enfants.
    Merci de vos reponses.

    Bernie
    ... Avec la structure de vos tables, ce serait plus simple...

  5. #5
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 23
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour

    La table parent est tree, mais vous lui donnez l'alias t.
    C'est la reponse que je voulais.
    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT     c.No_, d.No_+ d.[Version Code]  AS comp, d.[Production BOM No_]  ,t.level + 1,d."Quantity per",t."Quantity per",d.[Version Code]
    FROM         TABLE$Item AS c  JOIN
                          [TABLE$Production BOM Line] AS d ON 
                          c.[Production BOM No_] = d.[Production BOM No_] 
    INNER JOIN tree t ON t.comp=c.No_ )
    Je focalisais sur la 1ere partie de la requete, alors qu'il suffisait que rajouté t."Quantity per" dans la seconde partie.
    Encore merci.

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/07/2011, 15h22
  2. probléme sur une fonction
    Par titeufdev dans le forum PL/SQL
    Réponses: 3
    Dernier message: 11/01/2011, 09h36
  3. [String]Problème sur une fonction de récurrence
    Par hibou107 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 13/04/2010, 15h53
  4. [POO] Bug sur une fonction récursive : renvoit undefined
    Par zaboug dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/06/2008, 14h10
  5. [PostgreSQL] [PostGreSQL] problème sur une fonction avec connexion
    Par roblescriso dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 04/06/2008, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo