Bonjour tout le monde je demande votre aide à propos d'une requêtte select depuis plusiers tables(voir ci-dessous)
le problème c'est que la jointure des trois table me donne des resultat dupliqués
le resultat que je veux comme :
j'ai essayé une jointure à la normal mais hélas elle me sorte chaque ligne dupliquée 10 fois
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 1111 | jean | lucas | CE1| Septembre |0.00|impayé|Septembre |0.00|impayé 1111 | jean | lucas | CE1| Octobre |0.00|impayé|Octobre |0.00|impayé 1111 | jean | lucas | CE1| novembre |0.00|impayé|novembre |0.00|impayé 1111 | jean | lucas | CE1| decembre |0.00|impayé|decembre |0.00|impayé 1111 | jean | lucas | CE1| janvier |0.00|impayé|janvier |0.00|impayé 1111 | jean | lucas | CE1| fevrier |0.00|impayé|fevrier |0.00|impayé 1111 | jean | lucas | CE1| mars |0.00|impayé|mars |0.00|impayé 1111 | jean | lucas | CE1| avril |0.00|impayé|avril |0.00|impayé 1111 | jean | lucas | CE1| mai |0.00|impayé|mai |0.00|impayé 1111 | jean | lucas | CE1| juin |0.00|impayé|juin |0.00|impayé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT mt.massar,mt.nom,mt.prenom,mt.classe, ut.s_mois,ut.s_montant,ut.s_statut, ct.t_mois,ct.t_montant,ct.t_statut FROM etudiant mt INNER JOIN tb_spaiement ut on mt.massar = ut.massar LEFT JOIN tb_tpaiement ct on mt.massar = ct.t_massar WHERE mt.massar = '1111'
Ma table Etudiant:
Ma table tb_spaiement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 CREATE TABLE `etudiant` ( `id` int(11) NOT NULL, `massar` varchar(20) NOT NULL, `nom` varchar(30) NOT NULL, `prenom` varchar(30) NOT NULL, `classe` varchar(30) NOT NULL, `transport` varchar(30) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -- Déchargement des données de la table `etudiant` -- INSERT INTO `etudiant` (`id`, `massar`, `nom`, `prenom`, `classe`, `transport`) VALUES (1, '1111', 'jean', 'lucas', 'CE1', 'oui');
ma table tb_tpaiement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 CREATE TABLE `tb_spaiement` ( `id` int(11) NOT NULL, `massar` varchar(20) DEFAULT NULL, `s_mois` varchar(20) DEFAULT NULL, `s_montant` decimal(8,2) NOT NULL, `s_statut` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- -- Déchargement des données de la table `tb_spaiement` -- INSERT INTO `tb_spaiement` (`id`, `massar`, `s_mois`, `s_montant`, `s_statut`) VALUES (1, '1111', 'Septembre', '0.00', 'Impayé'), (2, '1111', 'Octobre', '0.00', 'Impayé'), (3, '1111', 'Novembre', '0.00', 'Impayé'), (4, '1111', 'Décembre', '0.00', 'Impayé'), (5, '1111', 'Janvier', '0.00', 'Impayé'), (6, '1111', 'Février', '0.00', 'Impayé'), (7, '1111', 'Mars', '0.00', 'Impayé'), (8, '1111', 'Avril', '0.00', 'Impayé'), (9, '1111', 'Mai', '0.00', 'Impayé'), (10, '1111', 'Juin', '0.00', 'Impayé');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 CREATE TABLE `tb_tpaiement` ( `id` int(11) NOT NULL, `t_massar` varchar(20) NOT NULL, `t_mois` varchar(20) DEFAULT NULL, `t_montant` decimal(8,2) NOT NULL, `t_statut` varchar(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci; -- -- Déchargement des données de la table `tb_tpaiement` -- INSERT INTO `tb_tpaiement` (`id`, `t_massar`, `t_mois`, `t_montant`, `t_statut`) VALUES (1, '1111', 'Septembre', '0.00', 'Impayé'), (2, '1111', 'Octobre', '0.00', 'Impayé'), (3, '1111', 'Novembre', '0.00', 'Impayé'), (4, '1111', 'Décembre', '0.00', 'Impayé'), (5, '1111', 'Janvier', '0.00', 'Impayé'), (6, '1111', 'Février', '0.00', 'Impayé'), (7, '1111', 'Mars', '0.00', 'Impayé'), (8, '1111', 'Avril', '0.00', 'Impayé'), (9, '1111', 'Mai', '0.00', 'Impayé'), (10, '1111', 'Juin', '0.00', 'Impayé');
Partager