SELECT avec 2 liens FK vers la même table [Résolu]

Messages postés
29
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
22 mars 2013
- - Dernière réponse : cs_Jaxom
Messages postés
29
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
22 mars 2013
- 2 juil. 2009 à 12:16
Bonjour,


J'ai plusieures tables



Tbl_Affilies qui contient:

Affilies_Id

Affilies_Nom_commercial

Affilies_Rue_commercial_Id

Affilies_Nom_Prive

Affilies_Rue_Prive_Id

....



Tbl_Rue qui contient

Rue_Id

Rue_Nom

Rue_CP_Id

...



Tbl_Localite qui contient

Localite_Id

Localite_Nom

Localite_Pays_Id

...



Tbl_Pays qui contient

Pays_Id

Pays_Nom

...



Ouf, c'est tout



Affilies_Rue_commercial_Id est une FK de la table Tbl_Rue etc...

J'ai donc 2 FK dans ma table Tbl_Affilies qui "pointent" sur la même table...


C'est là que je coince comment je fait un SELECT qui va me donner les adresses complètes:


Affilies_Id

Affilies_Nom_commercial

Affilies_Rue_commercial_Id

Rue_Nom

Localite_Id

Localite_Nom

Pays_Nom

Affilies_Nom_Prive

Affilies_Rue_Prive_Id

Rue_Nom

Localite_Id

Localite_Nom

Pays_Nom




Merci d'avance pour votre savoir à tous.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
3
Merci
FK : C'est quoi ?
Très mauvaise idée d'avoir associé des tables en cascade.
Il aurait mieux valu déclarer Rue_Id, CP_Id, Localite_Id et Pays_Id à la fiche principale.
Bref, quand tu as deux sources pouvant "taper" dans une même table, il suffit de déclarer plusieurs fois cette table.


Essaye ça :
 Select TA.Affilies_Id,
        TA.Affilies_Nom_commercial,
        TB.Rue_Nom,
        TC.Localite_Nom,
        TD.Pays_Nom,
        TA.Affilies_Nom_Prive,
        TE.Rue_Nom,
        TF.Localite_Nom,
        TG.Pays_Nom
   From Tbl_Affilies TA,
        Tbl_Rue TB,
        Tbl_Localite TC,
        Tbl_Pays TD,
        Tbl_Rue TE,
        Tbl_Localite TF,
        Tbl_Pays TG
  Where TA.Affilies_Rue_commercial_Id = TB.Rue_Id
    And TB.CP_Id = TC.Localite_Id
    And TC.Localite_Pays_Id = TD.Pays_Id
    And TA.Affilies_Rue_Prive_Id = TE.Rue_Id
    And TE.CP_Id = TF.Localite_Id
    And TF.Localite_Pays_Id = TG.Pays_Id

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés


<hr />
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
29
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
22 mars 2013
0
Merci
Hello,

Merci pour ta réponse Jack

Mais pourquoi:

Très mauvaise idée d'avoir associé des tables en cascade

Pour être complet j'ai fait une cascade car les localité et les pays interviennent dans plusieures tables; par exemple, j'ai des codes postaux de domicile et de distribution de courrier (en fait pour la poste en Belgique on a une adresse physique et une adresse du bureau de poste distributeur du courrier).

Bref, il m'a semblé (mais bon je ne suis pas un génie non plus) opportun de séparer les Code postaux et les pays pour faire des dropdownlist dans mes formulaires d'encodage. A partir de là, je me suis dit que dans les tables affiliés, prospects,bureau provinciaux, distributeurs... qui gèrent toutes des adressess, de ne pas mettre les adresses complète en dur dans les tables puisque elles sont dajà là en suivant les liaisons. De plus, si on mets une adresse à jour (genre un Code postal qui change par exemple) je ne dois pas m'occuper de mettre à jour quoi que ce soit dans mes différentes table.

Voila donc mon raisonement... maintenant, le but de la vie c'est progresser ^^ du coup, je suis à l'écoute de toute remarque de ta part ^^

Sur ce merci encore pour ton aide.

Philippe
Commenter la réponse de cs_Jaxom