|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 4 ![]() |
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 : Code :
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.... |
||
|
|
00
|
|
|
#2 |
![]() ![]() |
Votre problème est bien clair rassurez-vous.
Quel est votre SGBD ?
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Bonjour,
La requete suivante doit vous apporter ce que vous voulez Code sql :
Néanmoins, elle n'est pas très optimisée (calcul d'un MAX couteux et inutile) Indiquez votre SGBDR, on pourra surement trouver mieux que ca ! |
||
|
|
10
|
|
|
#4 |
![]() ![]() |
Un LIKE sans caractère générique % est équivalent à un =
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 4 ![]() |
Merci de vos réponse, je vais déjà tester cette première requête.
Mon SGBD je ne suis pas sûr, je suis hébergé chez OVH donc je passe par PhpMyAdmin mais le SGBD derrière je ne sais pas. Mais bon de toute façon je ne sais pas encore sur quel serveur sera le site à terme, donc je préfère éviter une solution spécifique à un SGBD. Pour le like sans '%' je sais, mais en fait j'ai simplifié, en réalité c'est un système de recherche qui autorise la saisie de '%' donc j'ai fais au plus vite en faisant un like même si l'utilisateur n'a pas saisi de '%', j'améliorerai ça par la suite. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 4 ![]() |
La requête donnée fonctionne très bien merci à vous, par contre comment se fait il que le MAX fonctionne là où mon DISTINCT ne marchait pas, ce n'était donc pas un problème de priorité du LEFT JOIN.... ?
|
|
|
00
|
|
|
#7 |
![]() ![]() |
DISTINCT fonctionne sur l'ensemble des colonnes du SELECT.
Autrement dit, ceci est inutile : C'est exactement pareil que cela : Dans les deux cas, la distinction se fera sur le triplet de colonnes {A, B, C}.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 4 ![]() |
ah ouai, faudrait quand même que je me replonge dans mes cours de SQL si je remets la main dessus
Merci de l'info. |
|
|
00
|
|
|
#9 |
![]() ![]() |
Il y a tout ce qu'il faut pas loin, chez SQLPro !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com