Bonjour,
Je sollicite de l'aide pour résoudre un petit problème d'unicité de lignes dans une requête avec une jointure, si certains sont en mesure de m'apporter une réponse de les remercie d'avance.
Mon besoin :
J'ai une table avec des acteurs, et une table avec des adresses (de 0 à n adresse par acteur).
Mon besoin est de récupérer en une requête SQL une liste des acteurs avec pour chacun d'eux la ville de leur adresse s'il y en a une (mais de limiter le résultat à une ligne par acteur, en gros si un acteur a plusieurs adresses je ne veux en récupérer qu'une seule peu m'importe laquelle).
Mon Problème :
Mon problème c'est donc que lors de la jointure, je veux récupérer toutes les lignes de ma table de gauche (bd_acteurs), et compléter par ce qui est trouvé dans la table de droit (bd_adresses), mais je voudrais limiter ma jointure à un seul résultat pour la table de droite, et je n'y arrive pas car le LEFT JOIN semble prioritaire sur mon Distinct du SELECT.
Exemple :
Table bd_acteurs (id_acteur, nom, prenom) :
1 : Martin : Jean
2 : Martin : Paul
3 : Durand : Michel
Table bd_adresses (id_acteur, ville)
1 : Paris
1 : Nantes
Ma requête SQL :
PS : Ce n'est pas exactement ma requête mais j'ai simplifié le nombre de champs pour l'exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT DISTINCT(a.id_acteur), a.nom, a.prenom, d.ville FROM bd_acteurs a LEFT JOIN bd_adresses d ON d.id_acteur = a.id_acteur WHERE a.nom like 'Martin';
Résultat obtenu :
1 : Martin : Jean : Paris
1 : Martin : Jean : Nantes
2 : Martin : Paul : NULL
Résultat souhaité :
1 : Martin : Jean : Paris (ou Nantes peu importe)
2 : Martin : Paul : NULL
Je ne sais pas si je suis assez clair....![]()
Partager