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 :

Requête SQL: Afficher Gratuit/Payant en une seule fois


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Points : 49
    Points
    49
    Par défaut Requête SQL: Afficher Gratuit/Payant en une seule fois
    Bonjour,

    Tout d'abord j'utilise:
    Toad for MySQL v.4.1.0.220
    MySQL v.5.1

    J'ai une table composée de client qui effectuent des transactions payantes ou gratuites.
    Je voudrais afficher en une seule commande le nombre d'achat gratuit, payant et le total.
    Actuellement j'arrive à mon résultat mais sur 3 requêtes distinctes.

    Exemple de ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select concat(substr(billing_date,6,2),' ',substr(billing_date,9,2)) as JOUR,count(client_id) as "TOTAL" 
    from table_billing 
    where billing_date between "2009-01-01" and "2009-01-06" 
    group by JOUR;
    En deux mots je concatene la date pour ressortir le mois suivi du jour puis le résultat.

    Résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JOUR	TOTAL
    01 01	3886
    01 02	3346
    01 03	3312
    01 04	3355
    01 05	2999
    En ajoutant une condition sur le prix j'arrive à resortir uniquement les payants:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select concat(substr(billing_date,6,2),' ',substr(billing_date,9,2)) as JOUR,count(client_id) as "TOTAL" 
    from table_billing 
    where billing_date between "2009-01-01" and "2009-01-06" 
    and price <> "0" 
    group by JOUR;
    Résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JOUR	PAYANT
    01 01	3684
    01 02	3114
    01 03	3132
    01 04	3184
    01 05	2776
    Ce que je souhaite avoir c'est ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    JOUR	GRATUIT	PAYANT	TOTAL
    01 01	202	3684	3886
    01 02	232	3114	3346
    01 03	180	3132	3312
    01 04	171	3184	3355
    01 05	223	2776	2999
    J'ai essayé avec des case mais sans succès, je n'arrive jamais à avoir la bonne syntaxe

    Merci pour votre aide future !

  2. #2
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 104
    Points
    1 104
    Par défaut
    Bonsoir,

    Avec le jeu d'essai suivant, qui doit ressembler à votre table:
    Code SQL : 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
    create table table_billing (
    id integer,
    billing_date date,
    price integer);
    insert into table_billing values (1, '2009-01-01', 0);
    insert into table_billing values (2, '2009-01-01', 30);
    insert into table_billing values (3, '2009-01-01', 10);
    insert into table_billing values (4, '2009-01-02', 44);
    insert into table_billing values (5, '2009-01-02', 55);
    insert into table_billing values (6, '2009-01-02', 0);
    insert into table_billing values (7, '2009-01-02', 0);
    insert into table_billing values (8, '2009-01-03', 91);
    insert into table_billing values (9, '2009-01-03', 1);
    insert into table_billing values (10, '2009-01-04', 0);
    insert into table_billing values (11, '2009-01-05', 100);
    insert into table_billing values (12, '2009-01-05', 0);
    La requête:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT DATE_FORMAT(billing_date, '%m %d') AS jour,
           SUM(IF(price>0, 1, 0)) AS payant,
           SUM(IF(price=0, 1, 0)) AS gratuit,
           Count(*) AS total
    FROM table_billing
    GROUP BY jour
    ORDER BY jour
    Donne le résultat suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    jour  	 payant   gratuit  total
    01 01 	 2        1        3
    01 02 	 2        2 	   4
    01 03 	 2        0 	   2
    01 04 	 0        1 	   1
    01 05 	 1        1 	   2
    Ça me semble correspondre à ce que vous cherchez.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 70
    Points : 49
    Points
    49
    Par défaut
    Enorme, milles merci !!

    C'est exactement ce que je recherchais.

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

Discussions similaires

  1. requete sql qui ne fonctionne qu'une seule fois
    Par brice97431 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 30/07/2012, 15h11
  2. Requête " chef d'un chef " en une seule fois
    Par Gex936 dans le forum SQL
    Réponses: 6
    Dernier message: 11/08/2011, 18h16
  3. [MySQL] N'afficher la page que une seul fois par jour par ip
    Par Nutaak dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/12/2007, 17h38
  4. [SQL] Afficher les résultats d'une requête sur plusieurs pages
    Par mealtone dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/09/2006, 13h20
  5. Réponses: 5
    Dernier message: 14/06/2006, 15h19

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