par
emilie14 » 17 déc. 2023, 22:23
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 :
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é
j'ai essayé une jointure à la normal mais hélas elle me sorte chaque ligne dupliquée 10 fois
Code : Tout sélectionner
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:
Code : Tout sélectionner
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_spaiement:
Code : Tout sélectionner
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é');
ma table tb_tpaiement :
Code : Tout sélectionner
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é');
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 :
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é
j'ai essayé une jointure à la normal mais hélas elle me sorte chaque ligne dupliquée 10 fois :cry: :cry: :cry:
[code]
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'
[/code]
Ma table Etudiant:
[code]
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');
[/code]
Ma table tb_spaiement:
[code]
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]
ma table tb_tpaiement :
[code]
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é');
[/code]