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

Requêtes MySQL Discussion :

Plusieurs count() dans une même requête


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 7
    Points
    7
    Par défaut Plusieurs count() dans une même requête
    Bonsoir,

    Ce message a pour but de trouver une solution pour associer deux count(), selon deux conditions différentes, dans une même requête (sur la même table)

    Je souhaiterais réunir ces deux requêtes en une seule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Requête 1 
    SELECT COUNT(owner) AS `nb_fleet` FROM fleet WHERE `owner` = '1';
    
    // Requête 2
    SELECT COUNT(owner) AS `nb_exepedition` FROM fleet WHERE `owner` = '1'  AND `mission` = '15';
    J'aurais pensé à des requêtes sous cette forme mais cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT 
        count(owner),
        ( count(owner) WHERE mission = '15')
    WHERE
        owner = '1';
    Auriez vous une idée ?

    Darka Maul

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT SUM(IF(`owner` = '1',1,0)  AS `nb_exepedition`,
     SUM(IF(  `owner` = '1'  AND `mission` = '15',1,0)  AS `nb_exepedition`
    FROM fleet
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 53
    Points
    53
    Par défaut
    Plus généralement, quand tu veux faire plusieurs requêtes en une seule, tu fais des sous-requêtes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT
    t1.nb_fleet,t2.nb_fleet
    FROM
    (
    SELECT owner,COUNT(owner) AS `nb_fleet` FROM fleet WHERE `owner` = '1'
    ) AS t1
    INNER JOIN
    (
    SELECT owner,COUNT(owner) AS `nb_exepedition` FROM fleet WHERE `owner` = '1'  AND `mission` = '15'
    ) AS t2 ON t1.owner=t2.owner

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    A cette nuance près que les sous-requêtes, notamment corrélées, plombent terriblement les performances avec MySQL.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT 
    SUM( IF(`owner` = '1',1,0) )  AS `nb_fleet`,
    SUM( IF( `owner` = '1'  AND `mission` = '15',1,0) ) AS `nb_exepedition`
    FROM fleet

    Merci pour cette requête que j'ai légérement corrigé (les parenthèses pour la fin de SUM() manquaient).

    Cette discussion est résolue, merci pour la rapidité de la réponse.

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

Discussions similaires

  1. [MySQL] Extraire plusieurs champs d'une table dans une même requête
    Par la_chouette dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 28/11/2012, 11h11
  2. Réponses: 4
    Dernier message: 20/05/2010, 12h28
  3. Réponses: 9
    Dernier message: 19/04/2009, 15h45
  4. faire plusieur count dans une même requète
    Par bossLINDROS dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 28/04/2008, 10h04
  5. [Requête] plusieurs champs dans une même table ayants la même source
    Par Christophe93250 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/04/2006, 16h18

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