[MYSQL] Pb de count(*) = 0 avec group by
mtardieu
Messages postés
15
Statut
Membre
-
mtardieu Messages postés 15 Statut Membre -
mtardieu Messages postés 15 Statut Membre -
Bonjour,
J'ai une base de données, où il y a plusieurs équipes, plusieurs produits, et d'autres champs non nécessaires pour le problème. Je ne possède qu'une table qui s'appelle article_database.
Dans cet exemple, j'ai 3 équipes : AB1 AB2 et PNE, ainsi que 4 produits : AeRE, AeTM, ARD, CMT.
J'aimerais connaitre le nombre d'article, pour chaque produit et pour chaque équipe. J'effectue donc cette requête mysql :
J'ai ce tableau qui est généré :
Team----- Product -- nb_article
AB1------- AeRE ----- 362
AB1------- AeTM ----- 569
AB1------- CMT ------ 6
AB2------- AeRE ----- 90
AB2------- AeTM ----- 55
AB2------- ARD ------ 20
AB2------- CMT ------ 4
PNE------- AeRE ----- 34
PNE------- AeRE ----- 51
Comme vous pouvez le voir, l'équipe AB1 a 0 article ARD. L'équipe AB2 possède des articles de chaque produit et l'équipe PNE ne possède pas d'article ARD et CMT.
Mais le group by permet que de sélectionner des champs non nuls.
Or, j'ai besoin absolument de rajouter les lignes qu'il manque avec des 0, afin d'obtenir ceci :
Team----- Product -- nb_article
AB1------- AeRE ----- 362
AB1------- AeTM ----- 569
AB1------- ARD ------ 0
AB1------- CMT ------ 6
AB2------- AeRE ----- 90
AB2------- AeTM ----- 55
AB2------- ARD ------ 20
AB2------- CMT ------ 4
PNE------- AeRE ----- 34
PNE------- AeRE ----- 51
PNE------- ARD ------ 0
PNE------- CMT ------ 0
J'aimerais savoir si quelqu'un a une syntaxe précise de mysql qui peut faire en sorte d'afficher des 0 afin de compléter mon tableau.
Merci d'avance !
J'ai une base de données, où il y a plusieurs équipes, plusieurs produits, et d'autres champs non nécessaires pour le problème. Je ne possède qu'une table qui s'appelle article_database.
Dans cet exemple, j'ai 3 équipes : AB1 AB2 et PNE, ainsi que 4 produits : AeRE, AeTM, ARD, CMT.
J'aimerais connaitre le nombre d'article, pour chaque produit et pour chaque équipe. J'effectue donc cette requête mysql :
SELECT 'Team' , 'Product' , COUNT(*) AS nb_article FROM 'article_database'WHERE 'Team'IN ('AB1','AB2','PNE') AND 'Product'IN ('AeRE', 'AeTM','ARD','CMT')
GROUP BY 'Team' , 'Product'
J'ai ce tableau qui est généré :
Team----- Product -- nb_article
AB1------- AeRE ----- 362
AB1------- AeTM ----- 569
AB1------- CMT ------ 6
AB2------- AeRE ----- 90
AB2------- AeTM ----- 55
AB2------- ARD ------ 20
AB2------- CMT ------ 4
PNE------- AeRE ----- 34
PNE------- AeRE ----- 51
Comme vous pouvez le voir, l'équipe AB1 a 0 article ARD. L'équipe AB2 possède des articles de chaque produit et l'équipe PNE ne possède pas d'article ARD et CMT.
Mais le group by permet que de sélectionner des champs non nuls.
Or, j'ai besoin absolument de rajouter les lignes qu'il manque avec des 0, afin d'obtenir ceci :
Team----- Product -- nb_article
AB1------- AeRE ----- 362
AB1------- AeTM ----- 569
AB1------- ARD ------ 0
AB1------- CMT ------ 6
AB2------- AeRE ----- 90
AB2------- AeTM ----- 55
AB2------- ARD ------ 20
AB2------- CMT ------ 4
PNE------- AeRE ----- 34
PNE------- AeRE ----- 51
PNE------- ARD ------ 0
PNE------- CMT ------ 0
J'aimerais savoir si quelqu'un a une syntaxe précise de mysql qui peut faire en sorte d'afficher des 0 afin de compléter mon tableau.
Merci d'avance !
A voir également:
- [MYSQL] Pb de count(*) = 0 avec group by
- To be filled by o.e.m - Forum Windows
- Numéro de téléphone excel 0 - Guide
- 5.x.0 - message bounced by administrator - Forum Mail
- Acpi\int33a0\0 ✓ - Forum Pilotes (drivers)
- Si #n/a alors 0 - Forum Bureautique
J'ai trouvé une solution entre temps. Le topic peut être clos.
$requete distinct 1 qui me permet de stocker les noms des team par exemple (j'ai besoin de ces infos de tte façon pour autre chose)
$v0=AB1
$v1=AB2
$v2=PNE
$team_number = 3
Idem pour product :
$z0=AeRE
$z1=AeTM
$z2=ARD
$z3=CMT
$product_number=4
Je scan mon tableau $r en bouclant sur les team et produit (j'ai donc 4*3 = 12 instructions)
$row=0; for ($m=0;$m < $team_number;$m++) { for ($k=0;$k < $product_number;$k++) { if ($r[$row][0]==${v.$m} and $r[$row][1]==${z.$k}) { $s[$row+$offset][0]=${v.$m}; $s[$row+$offset][1]=${z.$k}; $s[$row+$offset][2]=$r[$row][2]; $row++; } else { $s[$row+$offset][0]=${v.$m}; $s[$row+$offset][1]=${z.$k}; $s[$row+$offset][2]=0; $offset++; } } }Mon tableau s est donc un tableau de 4*3 lignes, avec des 0 lorsque la condition colonne0 = team $m et colonne 1 = product $k n'est pas remplie
Je n'ai pas compris ton commentaire