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 :

Requete SQL petite probleme


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut Requete SQL petite probleme
    Salut a tous et merci pour lire ma question! Je vous expose en details mon probleme.

    J'ai 7 tables avec les champs suivants:

    stk_ProduseDef(Code,Denumire,UM) -tab1
    stk_cfg_UM(IdUM,Denumire) tab2
    stk_PVDef(IdPVDef,IdLot,Cantitate,IdPV,IdProdDef) tab3
    stk_AlimentareStoc(IdLot,IdProdDef,PretFranco) - tab4
    stk_PV(IdPV,DatePV,IdPartener,idTipPV) - tab5
    ap_Parteneri(IdPartener,Nume) -tab6

    Bon ce que je veux obtenir c'est l'output suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Code (code du produit) | Denumire (nom du produit) | UM  (unite mesure pour produit) | Cantitate (c'est quantite du produit) | PretAch=PretFranco (prix d'achat du produit) du T1 | IdPartener (fourniseur-producteur de chaque produit) du T1
    J'ai obtenu les premieres 5 colonnes je veux lister maintenant la derniere colonne(IdPartener) pour chaque partenaire je veux lister la valeur d'acquisition du produit.


    Voila ce que j'ai fait:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    SELECT tab1.Code,tab1.Denumire,tab2.Denumire,tab3.Cantitate,tab4.PretAch, tab3.Cantitate*tab4.PretAch as valach,x.valach1
        FROM stk_ProduseDef tab1
     
    left join stk_cfgUM tab2 on tab1.IdUM=tab2.IdUM
     
    left join stk_PVDef tab3 on tab1.IdProdDef = tab3.IdProdDef
     
    left join stk_AlimentareStoc tab4 on tab4.IdLot = tab3.IdLot
     
    left join stk_PV tab5 on tab5.idPV = tab3.IdPV
     
     
    --et j'obtiens les premiers 5 colonnes comme je veux
     
    --Maintenant pour lister la valeur d'acquisition pour chaque producteur j'ai essaye comme ca: (c'est ca mon probleme) et aussi je dois mettre une condition pour chaque champ IdTipPV=2
     
    --d'ici est mon probleme dans le query!!!!
    left join
     
        (    SELECT tab5.IdPartener,SUM(tab3.Cantitate*tab4.PretAch) as valach
            FROM stk_PV
            WHERE IdTipPV = 2
            GROUP BY IdPartener
     
        )x  on tab1.IdPartener = x.IdPartener
     
    left join  ap_PARTENERI tab6 on tab6.IdPartener = tab5.IdPartener
    En esperant d'avoir explique en detail ce que je desire faire.

    Le probleme est dans le left join qui contient le tableau x.

    Voila le printscreen qui est execute par ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	SELECT tab1.Code,tab1.Denumire,tab2.Denumire,tab3.Cantitate,tab4.PretAch, tab3.Cantitate*tab4.PretAch as valach --,tab6.Nume
    Effet:


    Et en roulant la requete complete que je veux:

    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
    20
    21
    22
    23
    24
    25
     
     
    [/CSELECT tab1.Code,tab1.Denumire,tab2.Denumire,tab3.Cantitate,tab4.PretAch, tab3.Cantitate*tab4.PretAch
     as valach ,x.valach1
    --,tab6.Nume
    	FROM stk_ProduseDef tab1
     
    left join stk_cfgUM tab2 on tab1.IdUM=tab2.IdUM 
     
    left join stk_PVDef tab3 on tab1.IdProdDef = tab3.IdProdDef
     
    left join stk_AlimentareStoc tab4 on tab4.IdLot = tab3.IdLot
     
    left join stk_PV tab5 on tab5.idPV = tab3.IdPV
     
    left join
     
    	(	SELECT tab5.IdPartener,SUM(tab3.Cantitate*tab4.PretAch) as valach1 
    		FROM stk_PV tab5
    		WHERE IdTipPV = 2 
    		GROUP BY IdPartener
     
    	)x  on tab6.IdPartener = x.IdPartener
     
    left join  ap_PARTENERI tab6 on tab6.IdPartener = tab5.IdPartener
    J'obtiens 3 erreurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Msg 4104, Level 16, State 1, Line 1
    The multi-part identifier "tab3.Cantitate" could not be bound.
    Msg 4104, Level 16, State 1, Line 1
    The multi-part identifier "tab4.PretAch" could not be bound.
    Msg 4104, Level 16, State 1, Line 1
    The multi-part identifier "tab6.IdPartener" could not be bound.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Votre sous-requête est exécutée comme telle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT tab5.IdPartener,
             SUM(tab3.Cantitate * tab4.PretAch) AS valach1 
        FROM stk_PV as tab5
       WHERE IdTipPV = 2 
    GROUP BY IdPartener
    Vous voyez bien qu'à ce moment-là tab3 et tab4 sont inconnus.

  3. #3
    Membre éprouvé
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Votre sous-requête est exécutée comme telle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT tab5.IdPartener,
             SUM(tab3.Cantitate * tab4.PretAch) AS valach1 
        FROM stk_PV as tab5
       WHERE IdTipPV = 2 
    GROUP BY IdPartener
    Vous voyez bien qu'à ce moment-là tab3 et tab4 sont inconnus.


    Merci beacoup pour ton reponse!

    Et comment je dois modifier ma sous-requete?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    left join
     
    	(	SELECT tab5.IdPartener,SUM(tab3.Cantitate*tab4.PretAch) as valach1 
    		FROM stk_PV tab5
    		WHERE IdTipPV = 2 
    		GROUP BY IdPartener --nu  recunoaste tab3 si tab4 in subcerere
     
    	)x  on tab6.IdPartener = x.IdPartener
    Je veux calculer la valeur d'acquisition ValAch pour chaque partenaire. (IdPartener du tableau stk_AlimentareStoc). Comment puis-je faire pour qu'il reconnait le champ cantitate du tab3 et le champ PretAch=PretFranco du tableau tab4? (aussi je veux mettre la condition IdTipPV=2 pour la table stk_PV ).

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Il faut refaire les jointures et filtres dans la sous-requête, tout simplement.

  5. #5
    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
    J'ai l'impression qu'il te faut découvrir l'opération OUTER APLLY.

Discussions similaires

  1. [XL-2007] Champs requete SQL pose probleme
    Par guigui69 dans le forum Excel
    Réponses: 22
    Dernier message: 05/07/2014, 21h37
  2. Requete innerjoin petite probleme
    Par mihaispr dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/10/2009, 20h09
  3. [Requete SQL & VB] Probleme de requete
    Par Mou dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/05/2007, 17h54
  4. [DEBUTANT] petit probleme de requete sql
    Par eclipse012 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/12/2006, 15h10
  5. requete SQL et probleme de format de Date
    Par huon dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/08/2005, 11h56

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