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 :

introduire un count avec d'autres champs


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 48
    Points
    48
    Par défaut introduire un count avec d'autres champs
    J'e n'arrive pas à intrduire un count avec d'autres champs de la requête


    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT    [T - Gestion des demandes].[No Dossier], PROJETS.Libelle_Projet, [T - Gestion des demandes].[Libellé Demande],
    COUNT([T - Gestion des demandes].Date_Fermeture ) as fermetude
     
     
     
     
    FROM [T - Gestion des demandes], [T - Suivi Demandes], PROJETS, [T - Statut Demandes]
     
    WHERE [T - Gestion des demandes].[No Dossier] =  [T - Suivi Demandes].[No Dossier];
    Pourriez vous m'aider SVP

    Je vous remercie d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    Il vous suffit pourtant d'ajouter la condition de regroupement, et surtout les bonnes jointures entres vos tables : avec une jointure et 4 tables, vous êtes bien partis pour un superbe produit cartésien !

    Vous cumulez :
    - pas de jointures suffisants
    - espaces dans les noms de table
    - espaces dans les noms de champ
    - pas de regroupement

  3. #3
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 48
    Points
    48
    Par défaut
    j'ai repris une base de données donc ce n'est pas moi qui ai créée les noms de tables et pour ce qui concerne les jointures j'ai pas voulu mettre toute la requête sinon ça aurait été imcompréhensible

  4. #4
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 48
    Points
    48
    Par défaut
    voila ma requête en entier mais ça ne marche toujours pas avec le count
    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
     
    SELECT    [T - Gestion des demandes].[No Dossier], PROJETS.Libelle_Projet, [T - Gestion des demandes].[Libellé Demande],[T - Gestion des demandes].[Date de la Demande], [T - Statut demandes].Statut_demande, [T - Gestion des demandes].[Libellé Réponse],[T - Gestion des demandes].Date_Fermeture, count(*) 
     
     
     
     
    FROM [T - Gestion des demandes], [T - Suivi Demandes], PROJETS, [T - Statut Demandes]
     
    WHERE [T - Gestion des demandes].[No Dossier] =  [T - Suivi Demandes].[No Dossier]
     
    AND [T - Gestion des demandes].Statut_demande = [T - Statut Demandes].[ID Item] 
     
    AND [T - Gestion des demandes].[Code Origine Demande] =  [T - Suivi Demandes].[Code Origine Demande]
     
    AND PROJETS.Code_Projet= [T - Gestion des demandes].[Code Projet];

  5. #5
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Il faut utiliser les fonctions d'agrégations avec un group by.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT champ1, champ2, count(*)
    FROM MaTable
    WHERE ...
    GROUP BY champ1, champ2
    cf tuto SQL : http://sql.developpez.com/sqlaz/select/
    4.6 : ATTENTION : nous verrons que l'utilisation des fonctions statistiques nécessite la plupart du temps la mise en place d'une clause de groupage, afin de déterminé quel est le sous ensemble cible d'agrégation pour les calculs.

  6. #6
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 48
    Points
    48
    Par défaut
    j'ai fais la requête suivante:

    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
    SELECT   DISTINCT [T - Gestion des demandes].[No Dossier], PROJETS.Libelle_Projet, [T - Gestion des demandes].[Libellé Demande],[T - Gestion des demandes].[Date de la Demande], [T - Statut demandes].Statut_demande, [T - Gestion des demandes].[Libellé Réponse],[T - Gestion des demandes].Date_Fermeture, count (*)
     
     
     
     
    FROM [T - Gestion des demandes], [T - Suivi Demandes], PROJETS, [T - Statut Demandes]
     
    WHERE [T - Gestion des demandes].[No Dossier] =  [T - Suivi Demandes].[No Dossier]
     
    AND [T - Gestion des demandes].Statut_demande = [T - Statut Demandes].[ID Item] 
     
    AND [T - Gestion des demandes].[Code Origine Demande] =  [T - Suivi Demandes].[Code Origine Demande]
     
    AND PROJETS.Code_Projet= [T - Gestion des demandes].[Code Projet]
     
    GROUP BY [T - Gestion des demandes].[No Dossier], PROJETS.Libelle_Projet, [T - Gestion des demandes].[Libellé Demande],[T - Gestion des demandes].[Date de la Demande], [T - Statut demandes].Statut_demande, [T - Gestion des demandes].[Libellé Réponse],[T - Gestion des demandes].Date_Fermeture;

    voila ce que m'affiche internet explorer

    Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée 'Date_Fermeture' comme une partie de la fonction d'agrégat., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-7\www\lot2 odbc\affichage.php on line 433

    erreur à l'exucution de la requete37000

    Warning: odbc_num_rows(): supplied argument is not a valid ODBC result resource in c:\program files\easyphp1-7\www\lot2 odbc\affichage.php on line 442
    nous avons actuellement dossiers en cours de traitement et XXX dossiers terminées
    Warning: odbc_fetch_row(): supplied argument is not a valid ODBC result resource in c:\program files\easyphp1-7\www\lot2 odbc\affichage.php on line 449
    alors que lorsque je fais ceci ça marche

    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
    SELECT   DISTINCT [T - Gestion des demandes].[No Dossier], PROJETS.Libelle_Projet, [T - Gestion des demandes].[Libellé Demande],[T - Gestion des demandes].[Date de la Demande], [T - Statut demandes].Statut_demande, [T - Gestion des demandes].[Libellé Réponse],[T - Gestion des demandes].Date_Fermeture
     
     
     
     
    FROM [T - Gestion des demandes], [T - Suivi Demandes], PROJETS, [T - Statut Demandes]
     
    WHERE [T - Gestion des demandes].[No Dossier] =  [T - Suivi Demandes].[No Dossier]
     
    AND [T - Gestion des demandes].Statut_demande = [T - Statut Demandes].[ID Item] 
     
    AND [T - Gestion des demandes].[Code Origine Demande] =  [T - Suivi Demandes].[Code Origine Demande]
     
    AND PROJETS.Code_Projet= [T - Gestion des demandes].[Code Projet]
     
     
     
    ;




  7. #7
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Essaye de voir ce que donne ta première requête SANS le DISTINCT, puisque celui-ci ne sert à rien : tu regroupes déjà tes enregistrement grâce à ton GROUP BY

  8. #8
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 48
    Points
    48
    Par défaut
    j'ai fais ce que tu m'a dit et ça m'affiche l'erreur suivante


    Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Caractères trouvés après la fin de l'instruction SQL., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-7\www\lot2 odbc\affichage.php on line 432

    erreur à l'exucution de la requete37000

  9. #9
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Autre suggestion : ne fais pas un COUNT(*) mais un count du champ que tu veux comptabiliser.

    Si ça ne fonctionne toujours pas, remet-nous ta nouvelle requête dans ton message, sans les lignes blanches, STP

  10. #10
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 48
    Points
    48
    Par défaut
    ça ne marche pas non plus


    voici ma requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT [T - Gestion des demandes].[No Dossier], PROJETS.Libelle_Projet, [T - Gestion des demandes].[Libellé Demande],[T - Gestion des demandes].[Date de la Demande], [T - Statut demandes].Statut_demande, [T - Gestion des demandes].[Libellé Réponse],[T - Gestion des demandes].Date_Fermeture, COUNT([T - Gestion des demandes].Date_Fermeture) FROM [T - Gestion des demandes], [T - Suivi Demandes], PROJETS, [T - Statut Demandes] 
    WHERE [T - Gestion des demandes].[No Dossier] = [T - Suivi Demandes].[No Dossier] 
    AND [T - Gestion des demandes].Statut_demande = [T - Statut Demandes].[ID Item] 
    AND [T - Gestion des demandes].[Code Origine Demande] = [T - Suivi Demandes].[Code Origine Demande] 
    AND PROJETS.Code_Projet= [T - Gestion des demandes].[Code Projet] GROUP BY SELECT [T - Gestion des demandes].[No Dossier], PROJETS.Libelle_Projet, [T - Gestion des demandes].[Libellé Demande],[T - Gestion des demandes].[Date de la Demande], [T - Statut demandes].Statut_demande, [T - Gestion des demandes].[Libellé Réponse],[T - Gestion des demandes].Date_Fermeture;
    et voici ce que m'affiche internet explorer
    Warning: odbc_exec(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe. dans l'expression 'SELECT [T - Gestion des demandes].[No Dossier]'., SQL state 37000 in SQLExecDirect in c:\program files\easyphp1-7\www\lot2 odbc\affichage.php on line 459

  11. #11
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Enlève le SELECT juste après GROUP BY....

  12. #12
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 48
    Points
    48
    Par défaut
    oui je l'avais pas vu

  13. #13
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par amelhog
    oui je l'avais pas vu
    Moi non plus 8)

    Citation Envoyé par Xo
    Si ça ne fonctionne toujours pas, remet-nous ta nouvelle requête dans ton message, sans les lignes blanches, STP
    Comme quoi ça sert

  14. #14
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 48
    Points
    48
    Par défaut
    oui merci!

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

Discussions similaires

  1. Remplir automatiquement 1 champ text avec 2 autres champs text
    Par Dsphinx dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/05/2010, 21h11
  2. COUNT avec d'autre champs à sélectionner
    Par piotrr dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/03/2008, 11h37
  3. [FireBird] Distinct avec un autre champ
    Par jojo86 dans le forum Bases de données
    Réponses: 6
    Dernier message: 04/03/2008, 15h23
  4. Réponses: 3
    Dernier message: 01/08/2007, 09h26
  5. Réponses: 7
    Dernier message: 14/12/2006, 14h18

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