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 :

Aide requête COUNT


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Aide requête COUNT
    Bonjour,

    Je bloque un petit peu sur une requête COUNT.
    J'ai la base de données suivante

    LOCATION(numL, dateA, dateD, #numC) ou numC=numero client
    CLIENT(numC, nomC)

    Je dois effectuer la requête suivante: Du 1er juin au 30 juin 2009, combien de clients ont loué une chambre ?

    J'essaye avec la requête ci-dessous mais j'obtiens une erreur de syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COUNT (numC) from location 
    where (dateA >= '2009-06-01') AND (dateD <= '2009-06-30')
    Est-ce que quelqu'un pourrait m'aider svp?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 108
    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 108
    Points : 28 416
    Points
    28 416
    Par défaut
    Citation Envoyé par kaso54 Voir le message
    J'essaye avec la requête ci-dessous mais j'obtiens une erreur de syntaxe
    Quelle erreur de syntaxe ? Avec quel SGBD ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    J'ai l'erreur suivante "#1630 - FUNCTION hotel.COUNT does not exist." avec Mysql.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Le message d'erreur est pour le moins étrange et je ne vois pas d'erreur de syntaxe dans votre requête.

    Cependant...
    Du 1er juin au 30 juin 2009, combien de clients ont loué une chambre ?
    Avec votre requête, vous comptez le nombre de locations.

    J'ajoute qu'il vaut mieux utiliser BETWEEN pour définir une période plutôt que la double comparaison et votre requête devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(DISTINCT numC) 
    FROM location 
    WHERE dateA BETWEEN '2009-06-01' AND '2009-06-30'

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Vous ne vous êtes pas encore complètement remis d'hier CinePhil !
    Le between se justifierait si l'utilisation des deux opérateurs >= et <= avait concerné la même colonne

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 149
    Points
    149
    Par défaut
    Moi je dirais ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COUNT (numC) FROM location 
    Where dateA between '2009-06-01 AND '2009-06-30'
    and dateD between '2009-06-01' and '2009-06-30'
    and dateA<=dateD

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Vous ne vous êtes pas encore complètement remis d'hier CinePhil !
    Effectivement !
    Je suis même à la maison aujourd'hui suite à insomnie due au trou dans la gencive et à une belle crise de rhinite.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 898
    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 898
    Points : 53 136
    Points
    53 136
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Plorf Voir le message
    Moi je dirais ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT COUNT (numC) FROM location 
    Where dateA between '2009-06-01 AND '2009-06-30'
    and dateD between '2009-06-01' and '2009-06-30'
    and dateA<=dateD
    ben non : parce que sans le distinct je risque de compteer plusieurs fois le même cluient; car j'espère bien que ma boite à loué plusieur fois des choses à mes clients parce qu'ils étaient content !!!
    En plus y'a une chaine mal fermée !!!!

    A +

  9. #9
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    bonjour, comme ça peut être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select count(*) from
    (SELECT numC FROM location
    WHERE (dateA >= '2009-06-01') AND (dateD <= '2009-06-30')
    group by numC) Tlist_client

  10. #10
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Si tu veux compter le nombre de clients différents, il faut un COUNT(DISTINCT numC), si tu veux compter le nombre de locations, il faut faire COUNT(*)

    Concernant la date, je pense qu'il faut se contenter de tester dateA. En effet, quelqu'un arrivé en juin et parti en juillet ne sera pas compté par ta requête initiale, or il a bien loué une chambre en juin

    Ce qui donne la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select count(*) nbloc, count(distinct numC) nbclients
    from location
    where dateA between '2009-06-01' and  '2009-06-30'
    Bloon

  11. #11
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    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 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Citation Envoyé par Bloon Voir le message
    Concernant la date, je pense qu'il faut se contenter de tester dateA. En effet, quelqu'un arrivé en juin et parti en juillet ne sera pas compté par ta requête initiale, or il a bien loué une chambre en juin
    Tout comme quelqu'un arrivé en mai et parti en juin

  12. #12
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Tout comme quelqu'un arrivé en mai et parti en juin
    Non, quelqu'un arrivé en mai et parti en juin était présent en juin mais a loué en mai

    D'où l'importance d'être très précis dans ses spec...

    Bloon

  13. #13
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Donc si c'est vraiment ce que veut kaso54 (le nombre de clients qui sont arrivés en juin 2009), ma requête était bonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(DISTINCT numC) 
    FROM location 
    WHERE dateA BETWEEN '2009-06-01' AND '2009-06-30'

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Merci à tous pour vos réponses
    Avec la dernière requête de CinePhil ça marche très bien

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

Discussions similaires

  1. Aide requete count
    Par zzman dans le forum Requêtes
    Réponses: 5
    Dernier message: 26/07/2006, 11h10
  2. aide requete count
    Par zzman dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/07/2006, 13h39
  3. Requête count un peu chaud
    Par louroulou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/06/2006, 14h43
  4. Requête Count(*)
    Par shr3dpit dans le forum Langage SQL
    Réponses: 10
    Dernier message: 04/05/2006, 15h21
  5. PB avec une requête Count
    Par Marion dans le forum ASP
    Réponses: 7
    Dernier message: 05/07/2004, 12h56

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