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 :

Requète avec GROUP BY Sql Serveur 200


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 134
    Points : 50
    Points
    50
    Par défaut Requète avec GROUP BY Sql Serveur 2000
    Bonjour je developpe une application sous VB6 et SQL server 2000. Je fais une requete sur la table stock qui fonctionne correctement jusqu'a que j'insere UN GROUP BY.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    celle ci fonctionne :
     
    sql = "SELECT sculfort_stock.*, sculfort_article.*, sculfort_affaire.*, sculfort_plateau.*, sculfort_kardex.* FROM sculfort_stock LEFT JOIN sculfort_article ON sculfort_stock.id_article = sculfort_article.id_article LEFT JOIN sculfort_affaire ON sculfort_stock.id_affaire = sculfort_affaire.id_affaire LEFT JOIN sculfort_plateau ON  sculfort_stock.id_plateau = sculfort_plateau.id_plateau LEFT JOIN sculfort_kardex ON sculfort_plateau.id_kardex = sculfort_kardex.id_kardex WHERE sculfort_stock.id_article =" & Rst4("id_article")
     
     
    sql = "SELECT sculfort_stock.*, sculfort_article.*, sculfort_affaire.*, sculfort_plateau.*, sculfort_kardex.* FROM sculfort_stock LEFT JOIN sculfort_article ON sculfort_stock.id_article = sculfort_article.id_article LEFT JOIN sculfort_affaire ON sculfort_stock.id_affaire = sculfort_affaire.id_affaire LEFT JOIN sculfort_plateau ON  sculfort_stock.id_plateau = sculfort_plateau.id_plateau LEFT JOIN sculfort_kardex ON sculfort_plateau.id_kardex = sculfort_kardex.id_kardex WHERE sculfort_stock.id_article =" & Rst4("id_article") & " GROUP BY sculfort_stock.id_plateau"
     
     
    mm si je fais ca :
     
    sql="SELECT * FROM sculfort_stock GROUP BY id_plateau"
    cela me donne une erreur à chaque fois .

    Erreur : [Microsoft]ODBC SQL SERVER[SQL SERVER] La colonne sculfort_stock.id_stock n'est pas valide dans la liste de selection parce qu'elle n'est pas contenue ds une fonction d'agrégation ou dans la clause GROUP BY.

    Pourquoi cela ?
    Le champ id_stock est ma clé primaire dans la table sculfort_stock

    Cordialement,
    Corben

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    la clause GROUP BY regroupe, tu dois donc utiliser des agrégations pour afficher les résultats de chaque colonne. Tu ne peux pas à la fois avoir une ligne par id_plateau, et plusieurs lignes pour afficher chaque id_stock.
    http://sqlpro.developpez.com/cours/sqlaz/ensembles/#L1

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 134
    Points : 50
    Points
    50
    Par défaut
    et cela consiste en quoi une agrégation ?

    Mes tables :

    sculfort_stock
    id_stock clé primaire
    quantite
    id_plateau
    id_affaire
    id_commande

    sculfort_kardex
    id_kardex clé primaire
    nom_kardex

    sculfort_plateau
    id_plateau clé primaire
    nom_plateau
    id_kardex clé externe


    sculfort_article
    id_article
    reference
    designation

    Cordialement,
    Corben

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 134
    Points : 50
    Points
    50
    Par défaut
    Bonjour j'arrive a grouper par id_plateau maintenant mais je n'arrive plus à faire mes jointures pour recuper les autres informations.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT SUM(sculfort_stock.quantite) AS sommequantite FROM sculfort_stock  WHERE sculfort_stock.id_article=" & Rst4("id_article") & " GROUP BY sculfort_stock.id_plateau"

    Cordialement,
    Corben

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonsoir,

    Le terme "agréger" (Du latin aggregatio qui signifie réunion d'éléments). En informatique l'agrégation permet de définir une entité comme étant un assemblage de plusieurs sous-entités.

    Le cours d'@SQLpro que @rudib vous fournit vous expliques tout cela !!!

    celle ci fonctionne :
    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
    29
    30
    31
    32
    33
    34
    35
    sql = "SELECT sculfort_stock.*
                      , sculfort_article.*
                      , sculfort_affaire.*
                      , sculfort_plateau.*
                      , sculfort_kardex.* 
     
    FROM 
              sculfort_stock LEFT JOIN sculfort_article 
                                 ON sculfort_stock.id_article = sculfort_article.id_article LEFT JOIN sculfort_affaire 
                                          ON sculfort_stock.id_affaire = sculfort_affaire.id_affaire LEFT JOIN sculfort_plateau 
                                                 ON  sculfort_stock.id_plateau = sculfort_plateau.id_plateau LEFT JOIN sculfort_kardex 
                                                       ON sculfort_plateau.id_kardex = sculfort_kardex.id_kardex 
     
    WHERE 
               sculfort_stock.id_article =" & Rst4("id_article")
     
     
    sql = "SELECT sculfort_stock.*
                     , sculfort_article.*
                     , sculfort_affaire.*
                     , sculfort_plateau.*
                     , sculfort_kardex.* 
     
    FROM 
           sculfort_stock LEFT JOIN sculfort_article 
                               ON sculfort_stock.id_article = sculfort_article.id_article LEFT JOIN sculfort_affaire 
                                       ON sculfort_stock.id_affaire = sculfort_affaire.id_affaire LEFT JOIN sculfort_plateau 
                                              ON  sculfort_stock.id_plateau = sculfort_plateau.id_plateau LEFT JOIN sculfort_kardex 
                                                        ON sculfort_plateau.id_kardex = sculfort_kardex.id_kardex 
     
    WHERE 
                 sculfort_stock.id_article =" & Rst4("id_article") & " 
     
    GROUP BY 
                 sculfort_stock.id_plateau"

    même si je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sql="SELECT * 
     
           FROM sculfort_stock 
     
           GROUP BY id_plateau"


  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 134
    Points : 50
    Points
    50
    Par défaut
    Oui le cours m'a aidé j'ai compris comment regrouper par plateau afin d'avoir mon resultat mais je ne comprends pas comment recuperer les autres informations maintenant comme la reference de l'article ... qui sont ds des autres tables.
    aprés avoir regardé le cours j'arrive a cela, je fais la somme des quantités entrées et sorties et je les regoupe par plateau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql = "SELECT SUM(sculfort_stock.quantite) AS sommequantite FROM sculfort_stock  WHERE sculfort_stock.id_article=" & Rst4("id_article") & " GROUP BY sculfort_stock.id_plateau"
    Dès que je rajoute le moindre champ, la moindre jointure cela ne fonctionne plus.

    Cordialement,
    Corben

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 134
    Points : 50
    Points
    50
    Par défaut
    Bonjour ,

    Voila j'avance sur ma requete mais je n'arrive tjrs pas à selectionner les champs d'une autre table pour les afficher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql = "SELECT SUM(A.quantite) AS sommequantite FROM sculfort_stock A WHERE A.id_article=" & Rst4("id_article") & " GROUP BY A.id_plateau HAVING SUM(A.quantite)>0"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    sql = "SELECT SUM(A.quantite) AS sommequantite FROM sculfort_stock A  LEFT JOIN sculfort_article ON A.id_article = sculfort_stock.id_article WHERE A.id_article=" & Rst4("id_article") & " GROUP BY A.id_plateau HAVING SUM(A.quantite)>0"

    Voila mes 2 requetes fonctionne mais je n'arrive pas a recuperer les champs reference et designation de ma table sculfort_article ...

    Cordialement,
    Corben

Discussions similaires

  1. Requète avec GROUP BY sql server 2000
    Par Corben dans le forum Langage SQL
    Réponses: 7
    Dernier message: 12/12/2008, 16h53
  2. requête avec group by...
    Par JerBi dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/03/2006, 03h17
  3. Réponses: 1
    Dernier message: 01/02/2006, 17h48
  4. Problème requête avec group by et distinct
    Par tomca dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/07/2005, 16h10
  5. requête avec group by
    Par Staron dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/11/2004, 16h30

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