Multiple count suivant la valeur d'un champ
Bonsoir à tous,
Je vous remercie d'avance pour votre aide, je vais essayer de faire le message le plus précis possible. Je n'ai pas vu de demande similaire sur internet, désolé si plusieurs topics en parlent déjà.
Je vous donne le contexte: je souhaite afficher un tableau qui donne le nombre de match par joueur par groupe auquel il a joué. (il n'y a actuellement que 4 groupes)
je voudrais par exemple voir:
nom | match en 1 | match en 2 | match en 3 | match en 4
toto 3 2 0 1
J'ai 3 tables (si je me souviens bien, c'est souligné pour clé primaire, je mets la clé étrangère en italique):
dJoueur (idJoueur, nom, prenom)
dMatch (idMatch) // c'est pour distinguer les journées de championnats, ca pourra me servir plus tard)
dGdm (idGdm, idJoueur, idMatch, groupe)
J'ai essayé par 2 manières différentes:
1 j'ai testé par requête imbriqué, mais je suis bloqué sur le cas simple:
Code:
1 2 3 4 5 6 7 8 9 10
| SELECT
nom as p
FROM
dJoueur u
Inner JOIN (
SELECT COUNT(dGdm.idJoueur) AS nbMatch
FROM dGdm
GROUP BY dGdm.idJoueur
) tor
ON u.idJoueur = tor.idJoueur |
J'ai comme erreur: MySQL a répondu : Documentation
#1054 - Champ 'tor.idJoueur' inconnu dans on clause
J'ai essayé de mettre des tor au lieu des dGdm de partout, puis mettre des dGdm de partout, à chaque fois je bloque je ne comprends pas pourquoi.
j'ai donc essayé :
Code:
1 2 3 4 5 6 7 8 9 10
| SELECT j.nom, COUNT(g.groupe) AS nbM1, COUNT(g.groupe) AS nbM2, COUNT(g.groupe) AS nbM3, COUNT(g.groupe) AS nbM4
FROM `dJoueur` j, dGdm g, dMatch m
WHERE j.idJoueur = g.idJoueur
AND g.idMatch = m.idMatch
GROUP BY j.idJoueur, g.groupe
having g.groupe =1
having g.groupe =2
having g.groupe =3
having g.groupe =4 |
Ca ne marche pas. Sans le Having je sens que je suis proche de la solutions, j'ai 4 fois la même colonne mais plusieurs lignes.
J'ai la sensation qu'il faille que je fasse une requête imbriqué, mais même en lisant des articles un peu similaire je n'arrive pas à adapter à ma situation.
J'espère ne pas faire une erreur stupide, et je vous remercie encore de votre aide.