|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Inscription : janvier 2011 Messages : 74 ![]() |
Bonjour
J'ai un soucis avec la jointure de deux tables, je vous explique le problème au fait j'ai une table personne sa clé primaire est num_personne cette table a aussi une colonne num_adresse la deuxième table est adresses cette tables a deux colonnes(num_adresse et ordre adresse) qui construit une clé , et une troisième colonne nomRue donc quand je fais une jointure de ces deux table comme suivant Code :
bon exemple si dans ma table personne pour une personne x j'ai le num_adresse=12 si je cherche ce num dans la tables adresses je vois qu'il correspond à plusieurs rue alors que je veux récupérer qu'une seul rue j'espère que c'était clair Merci |
||
|
|
00
|
|
|
#2 |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 445 ![]() |
Pas vraiment clair.
Purrais-tu nous un exemple de données ?
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
00
|
|
|
#3 | ||||||
|
Membre du Club
![]() Inscription : juin 2005 Messages : 60 ![]() |
Pas particulièrement
.Si je comprends bien ça fait la structure suivante : personne(num_personne, num_adresse) adresse(num_adresse, ordre_adresse, nomRue) Cela autorise effectivement plusieurs noms de rue pour une personne, mais chacun de ces nom de rue est associé à un ordre_adresse distinct. Il faut préciser à la base de données quelle rue tu veux, parmi toutes celles qui peuvent exister pour une personne. Tu peux préciser un ordre d'adresse : Code SQL :
Tu peux choisir une ligne au pif (mais dans ce cas, tu peux récupérer des résultats différents en faisant le select plusieurs fois), en syntaxe MySQL : Code SQL :
Tu peux prendre le nom de rue avec le plus petit ordre d'adresse (pas propre d'utiliser le LIMIT 1 et l'ordre comme ça, mais bon) : Code SQL :
Le limit 1 est du MySQL, il existe des équivalents dans les autres SGBD. Sinon on peut aller chercher l'ordre avec une requête imbriquée, ou même une autre requête. Pour t'aider plus, il faudrait savoir avec quel SGBD tu travailles, et surtout sur quel critère tu veux choisir un nom de rue (donc savoir ce que signifie cet ordre d'adresse). |
||||||
|
|
00
|
|
|
#4 | |||
|
Membre éprouvé
![]() Inscription : janvier 2009 Messages : 301 ![]() |
Bonjour,
D'après des explications, tes tables ont le schéma défini par javast Citation:
personne(num_personne, num_adresse) adresse(num_adresse, ordre_adresse, nomRue, #num_personne) Il serait bien également d'actualiser ta présentation des jointures. Code :
Bon courage |
|||
|
|
00
|
|
|
#5 |
![]() ![]() |
Revenons à la première étape de la conception : les règles de gestion.
Javast, demande-toi si : 1) Une personne peut avoir plusieurs adresse et une adresse n'appartient qu'à une personne. ou bien : 2) Une personne peut avoir plusieurs personnes et une adresse appartient de une à plusieurs personnes. 2ème étape : le Modèle Conceptuel de Données (MCD, méthode Merise) MCD correspondant à la règle de gestion 1 : personne -0,n----avoir----1,1- adresse ou bien MCD correspondant à la règle de gestion 2 : personne -0,n----avoir----1,n- adresse 3ème étape : les tables 1) personne_prs (prs_id, prs_nom, prs_prenom...) adresse_adr (adr_id, adr_id_personne, adr_rue, adr_code_postal, adr_id_ville) ou bien 2) personne_prs (prs_id, prs_nom, prs_prenom...) adresse_adr (adr_id, adr_rue, adr_code_postal, adr_id_ville) prs_avoir_adr_paa (paa_id_adresse, paa_id_personne) Constat : aucune des deux solutions ne correspond à ton modèle ! Conclusion : il faut revoir ta conception !
__________________
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
|
|
|
#6 | ||
|
Futur Membre du Club
![]() Inscription : janvier 2011 Messages : 74 ![]() |
Merci à vous tous pour votre réponse, et désolé de ne pas pouvoir répondre avant car je n'avais pas de connexion chez moi ce week-end
donc finalement j'ai fini par préciser l'ordre de mon adresse comme vous l'aviez dit Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com