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 :

Double comptage dans une requete


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut Double comptage dans une requete
    Bonjour,

    Je voudrais faire une requet evers 1 table qui me renvoi un double comptage. Je m'explique:
    J'ai une table avec comme propriétés:
    Id Integer
    Joueur Char(20)
    Champion Boolean

    Je voudrais que ma requete me renvoi le nombre de joueur ou champion est à true et le nombre de joueur ou champion est a false.

    Je sais compter une des 2 conditions comme cela:

    Select Joueur, count(Champion)
    from Player
    Where champion = true
    Group by Joueur

    Mais je n'arrive pas à avoir le comptage des trues et des falses dans la meme requetes.

    Quelqu'un pourrait m'aiguiller?

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    C'est la table des joueurs et vous voulez compter des joueurs avec une certaine condition. Il suffit donc de compter les lignes avec cette condition. Comme il y a deux conditions opposées, il faut l'union de deux requêtes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT COUNT(*) AS NbChampion
    FROM Player
    WHERE champion = TRUE
    UNION
    SELECT COUNT(*) AS NbPasChampion
    WHERE champion = FALSE

  3. #3
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Merci, ca à l'air bien cet Union que je ne connaissais pas, mais il me marque une erreur, il me dit que le nom de colonne champion est incorrect.

    Bien entendu j'ai verifié l'orthographe, etrange. (je suis sous SQL 2000)

  4. #4
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Si je ne m'abuse, il manque le FROM dans la seconde partie de l'UNION:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT COUNT(*) AS NbChampion
    FROM Player
    WHERE champion = TRUE
    UNION
    SELECT COUNT(*) AS NbPasChampion
    FROM Player
    WHERE champion = FALSE
    Toutefois, je ne récupère que le premier COUNT.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Exact, il manquait le FROM !

    Essaie alors de simuler les deux colonnes dans les deux requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT COUNT(*) AS NbChampion, NULL AS NbPasChampion
    FROM Player
    WHERE champion = TRUE
    UNION
    SELECT NULL AS NbChampion, COUNT(*) AS NbPasChampion
    FROM Player
    WHERE champion = FALSE

  6. #6
    Membre actif Avatar de SaintAmand
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 174
    Points : 203
    Points
    203
    Par défaut
    Bonjour,

    Citation Envoyé par CinePhil Voir le message
    Essaie alors de simuler les deux colonnes dans les deux requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT COUNT(*) AS NbChampion, NULL AS NbPasChampion
    FROM Player
    WHERE champion = TRUE
    UNION
    SELECT NULL AS NbChampion, COUNT(*) AS NbPasChampion
    FROM Player
    WHERE champion = FALSE
    Et pourquoi pas tout simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Champion AS EstChampion, COUNT(*) AS effectif
    FROM Player
    GROUP BY Champion
    ?

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    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 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Oui, c'est vrai que c'est beaucoup plus simple !
    A force de voir des trucs tordus, on finit par chercher la complication !

  8. #8
    Membre habitué Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Points : 189
    Points
    189
    Par défaut
    Parfait, ca roule tt seul.

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

Discussions similaires

  1. Inserer le double quote dans une chaine de requete
    Par schwinny dans le forum VBA Access
    Réponses: 14
    Dernier message: 04/03/2008, 15h00
  2. Double condition dans une requete SQL
    Par quatar dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 29/05/2007, 16h22
  3. Double comptage dans une même table
    Par Patoune dans le forum Langage SQL
    Réponses: 5
    Dernier message: 22/03/2007, 17h49
  4. Réponses: 5
    Dernier message: 06/02/2007, 13h46
  5. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53

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