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 petite probleme


Sujet :

Développement SQL Server

  1. #1
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut Requete petite probleme
    J'ai 2 tables:

    ap_PARTENERI et ap_PARTENERI_ADRESE.

    Le champ IdPartener est Primary Key dans ap_PARTENERI et EXTERNAL KEY dans ap_PARTENERI_ADRESE.

    Judet est le champ du tableau ap_PARTENERI_ADRESE.

    Je dois calculer le nombre des partenaires groupes par le champ Judet(du tableau ap_PARTENERI_ADRESE) que j'ai nomme tab2.

    Donc je veux avoir IdPartener,NrParteneri2,Judet comme output:

    J'ai essaye comme ca mais j'ai un petit erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT tab1.IdPartener,tab2.Judet--,x.NrParteneri2
    FROM ap_PARTENERI tab1
    left join 
    (SELECT Judet,COUNT(IdPartener) AS NrParteneri2
    FROM ap_PARTENERI_ADRESE 
    GROUP BY Judet
    )x on x.IdPartener = tab1.IdPartener
    left join ap_PARTENERI_ADRESE tab2 on tab2.IdPartener = tab1.IdPartener
    Si j'execute cette sous-requete ca marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Judet,COUNT(IdPartener) AS NrParteneri2
    FROM ap_PARTENERI_ADRESE 
    GROUP BY Judet
    Mais si j'execute toute la requete fourni :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT tab1.IdPartener,tab2.Judet--,x.NrParteneri2
    FROM ap_PARTENERI tab1
    left join 
    (SELECT Judet,COUNT(IdPartener) AS NrParteneri2
    FROM ap_PARTENERI_ADRESE 
    GROUP BY Judet
    )x on x.IdPartener = tab1.IdPartener
    left join ap_PARTENERI_ADRESE tab2 on tab2.IdPartener = tab1.IdPartener
    [/CODE]

    Erreur a la derniere ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg 207, Level 16, State 1, Line 8
    Invalid column name 'IdPartener'.
    Je veux avoir comme output 3 colonnes (IdPartener,NrParteneri2(qui fait le nombre des partenaires groupes par le champ Judet)

    Je ne sais pas comment je dois modifier ma requete pour corriger l'erreur.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 907
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 907
    Points : 51 656
    Points
    51 656
    Billets dans le blog
    6
    Par défaut
    C'est normal. Votre requête interne ne contient pas la colonne IdPartener dans la clause SELECT, donc vous ne pouvez pas faire la jointure de la table dérivée.

    A +

  3. #3
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    C'est resolu!

    Merci beacoup!

    Voila:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT tab1.IdPartener,tab2.Judet,x.NrParteneri2
    FROM ap_PARTENERI tab1
    left join 
    (SELECT IdPartener,Judet,COUNT(IdPartener) AS NrParteneri2
    FROM ap_PARTENERI_ADRESE 
    GROUP BY IdPartener,Judet
    )x on x.IdPartener = tab1.IdPartener
    left join ap_PARTENERI_ADRESE tab2 on tab2.IdPartener = tab1.IdPartener

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 920
    Points : 4 828
    Points
    4 828
    Par défaut
    Bonjour,
    Visiblement, la requete peut être simplifiée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT tab1.IdPartener,x.Judet,x.NrParteneri2
    FROM ap_PARTENERI tab1
    LEFT JOIN 
    (SELECT IdPartener,Judet,COUNT(IdPartener) AS NrParteneri2
    FROM ap_PARTENERI_ADRESE 
    GROUP BY IdPartener,Judet
    )x ON x.IdPartener = tab1.IdPartener

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requete petite probleme de syntaxe
    Par mihaispr dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/11/2009, 13h08
  2. Requete petite probleme
    Par mihaispr dans le forum Développement
    Réponses: 1
    Dernier message: 19/10/2009, 16h45
  3. Requete petite probleme de comprehension
    Par mihaispr dans le forum Développement
    Réponses: 2
    Dernier message: 19/10/2009, 14h29
  4. petit probleme de requete
    Par micco dans le forum Access
    Réponses: 2
    Dernier message: 19/04/2006, 11h11
  5. petit probleme de requete
    Par nico33307 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/08/2004, 11h36

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