Bonjour.
C'est la première fois que je post sur votre forum, je vais essayer de mettre mon message le plus en forme possible.
J'ai un souci que je n'arrive pas à résoudre et j'ai beau chercher, je ne comprends pas bien ce qui ce passe. Je vais essayer d'être le plus clair possible.
Pour un site, j'ai besoin d'avoir des études qui peuvent être relié à un ou plusieurs utilisateurs ET/OU à un ou plusieurs comptes client
J'ai une base de donnée avec 5 tables :
Etude avec les champs utilisés : Id_etude
Rel_etude_compte_client avec les champs utilisés : Id_Etude et Id_Compte_client
Compte_client avec les champs utilisés : Id_compte_client
Rel_etude_compte_utilisateur avec les champs utilisés : Id_Etude et Id_Compte_utilisateur
Compte_utilisateur avec les champs utilisés : Id_utilisateur
Je cherche à afficher les études de ma base de donnée mais pas seulement. J'aimerais récupérer dans ma requête les Compte_client et les Compte_utilisateur qui sont reliés à mes études.
De plus je n'aimerais pas tout récupérer, seulement certains champs et concaténer les résultats des clients et utilisateurs qui sont reliés à mes études.
Je fais donc la requête suivante :
Je fais donc mon select avec mes champs sélectionnés et mes concaténation sur ma table Etude puis je joins mes tables en fonction de mes relations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT Etude.Id_etude,Etude.Titre_etude, GROUP_CONCAT(Nom_client_cc SEPARATOR '|') AS Nom_compte_client,GROUP_CONCAT(Nom_utilisateur SEPARATOR '|') AS Nom_compte_utilisateur FROM Etude LEFT JOIN Rel_etude_compte_client ON Rel_etude_compte_client.Id_Etude = Etude.Id_etude LEFT JOIN Compte_client ON Compte_client.Id_compte_client = Rel_etude_compte_client.Id_Compte_client LEFT JOIN Rel_etude_compte_utilisateur ON Rel_etude_compte_utilisateur.Id_Etude = Etude.Id_etude LEFT JOIN Compte_utilisateur ON Compte_utilisateur.Id_utilisateur = Rel_etude_compte_utilisateur.Id_Compte_utilisateur GROUP BY Etude.Id_etude
L'affichage est correct sauf que j'ai des doublons...
Voila l'affichage de ma requête :
OR j'ai dans ma base de donnée
- l'étude Id_etude 3 relié à deux comptes clients (ADIDAS ET NIKE) ET trois utilisateurs (jack sparrow, picahul et gonzalez)
- l'étude Id_etude 4 relié à un compte client (ADIDAS) et trois compte utilisateurs (gonzalez, picahul et gonzalez, en effet test avec deux utilisateurs du même nom...)
Ce qui est étrange c'est que mon résultat est bon quand j'ai simplement mes deux jointures de tables comme cette requête :
J'ai bien le résultat comme l'image ci-dessous :SELECT Etude.Id_etude,Etude.Titre_etude, GROUP_CONCAT(Nom_client_cc SEPARATOR '|') AS Nom_compte_client FROM Etude
LEFT JOIN Rel_etude_compte_client ON Rel_etude_compte_client.Id_Etude = Etude.Id_etude
LEFT JOIN Compte_client ON Compte_client.Id_compte_client = Rel_etude_compte_client.Id_Compte_client
GROUP BY Etude.Id_etude
- J'ai bien ici par exemple l'étude avec Id_etude 3 qui est relié aux deux comptes clients ADIDAS et NIKE
Donc il se passe une multiplication de ligne de résultat que je ne maîtrise pas lorsque j'ajoute mes deux autres jointures de table..
Auriez vous une solution, proposition pour que mon résultat s'affiche sans doublons ?
Merci de votre aide, j'en ai grand besoin !
Bonne fin de journée !
PM.VIAL
Partager