mtardieu
Messages postés15Date d'inscriptionlundi 2 juillet 2012StatutMembreDernière intervention 3 juillet 2012
-
2 juil. 2012 à 15:40
PunKeel
Messages postés43Date d'inscriptionlundi 3 octobre 2011StatutMembreDernière intervention26 février 2014
-
3 juil. 2012 à 11:39
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 :
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'
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 :
mtardieu
Messages postés15Date d'inscriptionlundi 2 juillet 2012StatutMembreDernière intervention 3 juillet 2012 3 juil. 2012 à 09:50
Merci de tes infos mais j'ai déjà malheureusement passé plus de 5heures sur des forums à chercher le même problème que moi, et j'ai déjà vu tous les posts que tu as mis. Seul problème : je n'ai qu'une seule table, et toutes les solutions apportées consistent à faire un LEFT JOIN, et nécessitent une deuxième table. Donc ce n'est pas du tout le même problème =)
Je ne vois pas comment le group by est inutile, dans la mesure où le foreach demanderait de faire 2 boucles, une sur la team et une sur le produit, et donc je pense un temps de calcul plus important. (Pour la requête sql, je ne vois pas comment faire pareil ^^)
Sinon j'ai trouvé une autre solution, en fait je créer à partir de mon tableau généré l'autre tableau en faisant comme ceci :
$row = 0
boucle for $k++ sur les team
{
boucle for $m++ sur les product
{
si colonne0 de ma ligne $row égale à team $k et si colonne1 de ma ligne $row égale au product $m alors
j'affiche colonne2
sinon j'affiche 0
$row++
}
}