Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1545 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1936779
Sethenssen
Posté le 01-11-2009 à 14:48:29  profilanswer
 

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 :
  1. SELECT concat(substr(billing_date,6,2),' ',substr(billing_date,9,2)) AS JOUR,count(client_id) AS "TOTAL"
  2. FROM table_billing
  3. WHERE billing_date BETWEEN "2009-01-01" AND "2009-01-06"
  4. GROUP BY JOUR;


En deux mots je concatene la date pour ressortir le mois suivi du jour puis le résultat.
 
Résultat:

Code :
  1. JOUR TOTAL
  2. 01 01 3886
  3. 01 02 3346
  4. 01 03 3312
  5. 01 04 3355
  6. 01 05 2999


 
En ajoutant une condition sur le prix j'arrive à resortir uniquement les payants:

Code :
  1. SELECT concat(substr(billing_date,6,2),' ',substr(billing_date,9,2)) AS JOUR,count(client_id) AS "TOTAL"
  2. FROM table_billing
  3. WHERE billing_date BETWEEN "2009-01-01" AND "2009-01-06"
  4. AND price <> "0"
  5. GROUP BY JOUR;


 
Résultat:

Code :
  1. JOUR PAYANT
  2. 01 01 3684
  3. 01 02 3114
  4. 01 03 3132
  5. 01 04 3184
  6. 01 05 2776


 
Ce que je souhaite avoir c'est ça:

Code :
  1. JOUR GRATUIT PAYANT TOTAL
  2. 01 01 202 3684 3886
  3. 01 02 232 3114 3346
  4. 01 03 180 3132 3312
  5. 01 04 171 3184 3355
  6. 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 !


Message édité par Sethenssen le 01-11-2009 à 21:55:22
mood
Publicité
Posté le 01-11-2009 à 14:48:29  profilanswer
 

n°1936880
Sethenssen
Posté le 01-11-2009 à 21:53:22  profilanswer
 

Résolu par Oishiii
 
La requête:

Code :
  1. SELECT DATE_FORMAT(billing_date, '%m %d') AS jour,
  2.       SUM(IF(price>0, 1, 0)) AS payant,
  3.       SUM(IF(price=0, 1, 0)) AS gratuit,
  4.       Count(*) AS total
  5. FROM table_billing
  6. GROUP BY jour
  7. ORDER BY jour


Donne le résultat suivant:

Code :
  1. jour    payant   gratuit  total
  2. 01 01   2        1        3
  3. 01 02   2        2     4
  4. 01 03   2        0     2
  5. 01 04   0        1     1
  6. 01 05   1        1     2


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

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

 

Sujets relatifs
[RESOLU] INSERT Mysql foireux[Résolu] Généricité et héritage
[Résolu] Tri d'une matricecomment afficher une page php pour test ?
[RESOLU] Probleme couleur PC et MAC en HTML!! HELP PLZ :)japplet petit soucis d'appel :/
[Résolu][Trigger] mise a jour d'un champ lors de l'uptate d'un autre[Resolu][SOAP][PHP] Utilisation des paramètres
[RESOLU]Plusieurs requetes SQL en une seul sous forme de tableau 
Plus de sujets relatifs à : [RESOLU]Requête SQL: Afficher Gratuit/Payant en une seule fois


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR