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

Langage SQL Discussion :

Pb Count dans une requete avec plusieurs champ retournés


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Points : 41
    Points
    41
    Par défaut Pb Count dans une requete avec plusieurs champ retournés
    Bonjour,

    Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id, date_creation, objet, delai, date_delai, operateur, COUNT (*) As mavariable FROM TEL_SWITCH WHERE statut=1 GROUP BY id
    En fait ce que je veux, c'est avoir le nb d'enregistrement qui ont le statut '1' mais pas en deux requetes, en une seule ...
    J'ai le droit à ça comme réponse à l'execution de la précédente requête :
    Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'date_creation' comme une partie de la fonction d'agrégat.
    Je crois avoir un problème de GROUP BY à la lecture de plusieurs posts mais je ne comprends pas le pourquoi ...

    Si quelqu'un à une idée ...
    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 392
    Points
    28 392
    Par défaut
    Toutes les colonnes qui ne sont pas agrégées doivent être reprises dans la clause GROUP BY.
    Cours sur les Regroupements en SQL

  3. #3
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Salut,
    tu n'as pas besoin du group by.
    Exemple :
    id statut
    --------
    1 1
    2 2
    3 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT count(*) as cpt
    FROM MATABLE
    WHERE statut = 1
    Resultat :
    cpt
    ---
    2
    Normalement cela suffit, a moins que j'ai mal compris ce que tu voulais.

    Desolee pour le clavier QWERTY

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Points : 41
    Points
    41
    Par défaut ;-)
    Merci lola mais ce n'est pas tout à fait ça, je souhaite avoir les champs aussi dans le résultat de la requête comme date_création ou autre ;-)

  5. #5
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Il y a quelque chose que je ne comprend pas, id est-il ton identifiant ?
    Si oui il est unique et donc il y aura 1 pour chaque ligne (pour le count).
    Si non peux-tu nous en dire un peu plus sur ta table ?

    En resultat tu veux avoir quoi concretement ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Points : 41
    Points
    41
    Par défaut
    al1_24,

    Merci pour ta réponse, j'ai bien regardé le cours mais désolé je ne comprends pas cette histoire de colonnes agrégées. Tu pourrais m'éclairer ?

    Désolé du dérangement.

  7. #7
    Membre régulier Avatar de beren.kei
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Points : 123
    Points
    123
    Par défaut group by
    si tu veux garder ton group by, il faut que tous les champs (prorpietes,... ) présent dans le select soit dans le group by... (sauf peut etre les fonctions, ca je sais plus trop... )

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id, date_creation, objet, delai, date_delai, operateur, COUNT (*) AS mavariable 
    FROM TEL_SWITCH 
    WHERE statut=1 
    GROUP BY id, date_creation, objet, delai, date_delai, operateur
    essaye comme ca, si ca fonctionne pas essaye aussi avec "mavariable" dans ta clause group by...
    voila, j'espère que ca peut t'aider...

  8. #8
    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
    si tu veux garder ton group by, il faut que tous les champs (prorpietes,... ) présent dans le select soit dans le group by... (sauf peut etre les fonctions, ca je sais plus trop... )
    En effet, dans un GROUP BY (comme la déjà dit al1_24) tous les noms de colonnes présents dans le SELECT doivent apparaître SAUF ceux qui comportent des fonctions d'agrégat tel que COUNT, SUM, AVG... etc

Discussions similaires

  1. Utilisation de COUNT() dans une requete avec 3 table
    Par chych dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/06/2010, 11h54
  2. Plusieurs count dans une requete !
    Par cmoi70 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/02/2010, 17h15
  3. [phpMyAdmin] Comment importer une colonne excel dans une BDD avec plusieurs champs ?
    Par guillaume7684 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 30/06/2009, 14h57
  4. Réponses: 1
    Dernier message: 28/03/2007, 12h23
  5. PLusieurs COUNT dans une requete?
    Par haludo dans le forum Access
    Réponses: 3
    Dernier message: 04/10/2006, 10h38

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