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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  SQL : count multiple, groupby...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL : count multiple, groupby...

n°2216331
eviltyler
ex-Consultant Hippie
Posté le 16-01-2014 à 17:51:04  profilanswer
 

J'utilise 2 requêtes pour poduire des tableaux de reporting :
 

Citation :

SELECT cs1.produit_c produit, COUNT(c1.id) count1
FROM cases c1, cases_cstm cs1
WHERE  
c1.team_set_id IN (SELECT team_set_id FROM team_sets_teams WHERE team_id IN (liste de teams1)  
AND cs1.statuttraitement_c IN (liste de statuts)  
AND  c1.deleted=0 and c1.id = cs1.id_c
GROUP BY cs1.produit_c


 

Citation :

SELECT cs2.produit_c produit, COUNT(c2.id) count2
FROM cases c2, cases_cstm cs2
WHERE  
c2.team_set_id IN (SELECT team_set_id FROM team_sets_teams WHERE team_id IN (liste de teams2))  
AND cs2.statuttraitement_c IN (liste de statuts)  
AND  c2.deleted=0 and c2.id = cs2.id_c
GROUP BY cs2.produit_c


 
Ca me produit deux tableaux :
 
produit     count1
produit1 12
produit2 14
produit3 13
..
 
et
 
produit     count2
produit1   1569
produit2 588
produit3 36
...
 
 
Je cherche un moyen de concaténer ces deux tableaux avec une seule requête pour avoir :
 
produit     count1        count2
produit1 12               1569
produit2 14               588
produit3 13               36
...
 
 
J'ai tenté avec CASE WHEN mais ça tourne dans le vide...
 
Quelqu'un aurait il une idée ?


---------------
More GG, more skill
mood
Publicité
Posté le 16-01-2014 à 17:51:04  profilanswer
 

n°2216374
lasnoufle
La seule et unique!
Posté le 17-01-2014 à 02:52:22  profilanswer
 

Salut
 
Tout simplement un JOIN directement entre tes deux requetes?
 

SELECT cnt1.produit, cnt1.count1, cnt2.count2
FROM
   (SELECT cs1.produit_c produit, COUNT(c1.id) count1
   FROM cases c1, cases_cstm cs1
   WHERE  
   c1.team_set_id IN (SELECT team_set_id FROM team_sets_teams WHERE team_id IN (liste de teams1)  
   AND cs1.statuttraitement_c IN (liste de statuts)  
   AND  c1.deleted=0 and c1.id = cs1.id_c
   GROUP BY cs1.produit_c) cnt1
JOIN
   (SELECT cs2.produit_c produit, COUNT(c2.id) count2
   FROM cases c2, cases_cstm cs2
   WHERE  
   c2.team_set_id IN (SELECT team_set_id FROM team_sets_teams WHERE team_id IN (liste de teams2))  
   AND cs2.statuttraitement_c IN (liste de statuts)  
   AND  c2.deleted=0 and c2.id = cs2.id_c
   GROUP BY cs2.produit_c) cnt2 ON cnt2.produit = cnt1.produit


 
Bon c'est p'tetre pas le plus performant, quoique. Mais j'ai la flemme de penser la, il est tard.
 
A+


---------------
C'était vraiment très intéressant.
n°2216376
Yonel
Monde de merde !
Posté le 17-01-2014 à 05:34:00  profilanswer
 

Pas sûr que ça corresponde à ton besoin, mais si ton SGBD le permet je te conseille de jeter un coup d'oeil à "GROUP BY GROUPING SETS" (google-le, ya des tonnes de pages qui en parlent)

n°2216384
eviltyler
ex-Consultant Hippie
Posté le 17-01-2014 à 09:20:34  profilanswer
 

lasnoufle a écrit :

Salut
 
Tout simplement un JOIN directement entre tes deux requetes?
 

SELECT cnt1.produit, cnt1.count1, cnt2.count2
FROM
   (SELECT cs1.produit_c produit, COUNT(c1.id) count1
   FROM cases c1, cases_cstm cs1
   WHERE  
   c1.team_set_id IN (SELECT team_set_id FROM team_sets_teams WHERE team_id IN (liste de teams1)  
   AND cs1.statuttraitement_c IN (liste de statuts)  
   AND  c1.deleted=0 and c1.id = cs1.id_c
   GROUP BY cs1.produit_c) cnt1
JOIN
   (SELECT cs2.produit_c produit, COUNT(c2.id) count2
   FROM cases c2, cases_cstm cs2
   WHERE  
   c2.team_set_id IN (SELECT team_set_id FROM team_sets_teams WHERE team_id IN (liste de teams2))  
   AND cs2.statuttraitement_c IN (liste de statuts)  
   AND  c2.deleted=0 and c2.id = cs2.id_c
   GROUP BY cs2.produit_c) cnt2 ON cnt2.produit = cnt1.produit


 
Bon c'est p'tetre pas le plus performant, quoique. Mais j'ai la flemme de penser la, il est tard.
 
A+


 
 [:hodjeur]  
Merci beaucoup :)


---------------
More GG, more skill
n°2216385
eviltyler
ex-Consultant Hippie
Posté le 17-01-2014 à 09:22:02  profilanswer
 

Yonel a écrit :

Pas sûr que ça corresponde à ton besoin, mais si ton SGBD le permet je te conseille de jeter un coup d'oeil à "GROUP BY GROUPING SETS" (google-le, ya des tonnes de pages qui en parlent)


 
 
Ca devient un peu complexe pour moi  :pt1cable:  
 


---------------
More GG, more skill

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

  SQL : count multiple, groupby...

 

Sujets relatifs
Pont entre ciel gestion commercial et SQL/php - OU Access voir autre..Probleme de comptage (SQL Oracle)
[MSSQL][T-SQL] résultat de 2 requêtes dans un mailRESOLU Erreur dans un count
Sql count multiplesRequette ou tri, ou sélection multiple...
SQL ServerTrace des requêtes SQL - Access 97
Plus de sujets relatifs à : SQL : count multiple, groupby...


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