Bonjour, je demande de l'aide sur une requete que je fais dans MySql 4.1.9, dans laquelle j'applique plusieurs LEFT JOIN.
J'ai une table "club"
------------------------------------------------------------
-- Structure de la table `club`
--
CREATE TABLE `club` (
`id_club` int(3) NOT NULL auto_increment,
`nom_club` varchar(50) NOT NULL default '',
PRIMARY KEY (`id_club`)
)
--
-- Contenu de la table `club`
--
INSERT INTO `club` VALUES (1, 'toto');
INSERT INTO `club` VALUES (2, 'tata');
------------------------------------------------------------
et j'ai la table "joueur"
------------------------------------------------------------
-- Structure de la table `joueur`
--
CREATE TABLE `joueur` (
`id_joueur` int(3) NOT NULL auto_increment,
`id_club` int(3) NOT NULL default '0',
`avis` int(1) NOT NULL default '0',
PRIMARY KEY (`id_joueur`)
)
--
-- Contenu de la table `joueur`
--
INSERT INTO `joueur` VALUES (1, 1, 0);
INSERT INTO `joueur` VALUES (2, 2, 0);
INSERT INTO `joueur` VALUES (3, 1, 1);
INSERT INTO `joueur` VALUES (4, 1, 1);
INSERT INTO `joueur` VALUES (5, 2, 2);
INSERT INTO `joueur` VALUES (6, 2, 2);
------------------------------------------------------------
Je veux le résultat suivant pour chacun de mes 2 clubs :
son identifiant, le nombre de joueurs dont l'avis est 0, le nombre de joueurs dont l'avis est 1 et le nombre de joueurs dont l'avis est 2.
Ca doit ressembler a ca :
1 | 1 | 2 | 0
2 | 1 | 0 | 2
J'ai fait la requete suivante sans le succès escompté :
---------------------------------
select
cl.id_club,
count(jr0.avis) as neutre,
count(jr1.avis) as favorable,
count(jr2.avis) as defavorable
from
(club cl)
left join joueur jr0 on
jr0.id_club = cl.id_club and jr0.avis = 0
left join joueur jr1 on
jr1.id_club = cl.id_club and jr1.avis = 1
left join joueur jr2 on
jr2.id_club = cl.id_club and jr2.avis = 1
group by 1
---------------------------------
Avant de tenter ma chance dans ce forum, j'ai essayé de trouvé des infos sur en ligne mais j'ai pas trouvé grand chose. Je pense avoir compris le principe du LEFT JOIN mais à la vue du résultat, du coup j'en doute.
J'espère être assez clair dans mon explicationmais si c'est pas le cas, n'hésitez pas à me demander d'autres infos.
Pour le moment, je me suis résigner à faire plusieurs requetes afin d'arriver à ce que je veux mais c'est vraiment pas top.
Merci d'avance à ceux qui veulent m'aider.
Laurent
Partager