Triple jointure JOIN LEFT SQL

Résolu
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 20 août 2005 à 12:05
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 20 août 2005 à 12:37
Salut,



Pour un projet, j'aimerais faire une triple jointure :

j'ai fait une table mysql pour des contacts, une table qui contient des
groupes, une table qui contient les maisons, une autre qui contient des
dates, une qui contient des mails, une autre pour les tels...



C'est pour un gestionaire de contacts, ça doit permetre d'avoir
plusieurs numérots de telephones, plusieurs adresses, plusieurs
adresses mails... On doit ainsi pouvoir reperer ensuite les
colocataires facilement... J'ai aussi prévu une tables dates
importantes pour les aniversaires et les aniversaires de mariages...



Pour lister mes contacts, j'ai commencé par faire une requette silmple,
mais elle ne pouvait afficher que le nom, le prénom, et l'id de leur
groupe (et leur id aussi). J'ai ensuite tenté une jointure interne avec
la table groupes, mais elle ne me convenais pas car elle n'affichait
pas les personnes sans groupes...



J'ai donc choisit une jointure externe, j'ai alors réussi à placer les
groupes. ayant aussi programmé les numérots de téléphones, j'ai alors
fait une requette avec une triple jointure externe, mais ça n'a pas
marché...



SELECT liste.id, liste.nom, liste.prenom, liste.sexe, groupes.nom as groupeName

FROM groupes RIGHT JOIN liste ON groupes.id=liste.groupe



cete double jointure m'affiche corectement les contacts et leurs groupes...



SELECT liste.id, liste.nom, liste.prenom, liste.sexe, groupes.nom as groupeName, tel.type, tel.label, tel.tel

FROM tel, groupes RIGHT JOIN liste ON groupes.id=liste.groupe AND tel.id_contact=liste.id



j'ai essayé de cette façon ma triple jointure, et ça ne m'affiche plus
les contacts, cependant, elle affiche tout les tels pour tout le monde
(comme si les on n'étaient pas pris pour le tel et qu'ils renvoyaient
toujours false pour les groupes...)



ma table liste :

id INT UNSIGNED AUTO_INCREMENT,

groupe
INT UNSIGNED,

nom CHAR(30),

prenom
CHAR(30),

sexe

ENUM("feminin", "masculin"),



ma table groupes

id
INT UNSIGNED
AUTO_INCREMENT,

nom CHAR(30),

description CHAR(150),



et tel

id
INT UNSIGNED
AUTO_INCREMENT,

id_contact INT UNSIGNED,

type

ENUM("portable","domicile","travail","autre"),

label CHAR(35),

tel CHAR(15),



merci d'avance


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

1 réponse

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
20 août 2005 à 12:37
SELECT liste.id, liste.nom, liste.prenom, liste.sexe, groupes.nom as groupeName, tel.type, tel.label, tel.tel

FROM tel RIGHT JOIN groupes RIGHT JOIN liste ON groupes.id=liste.groupe ON tel.id_contact=liste.id



ça marche parfaitement, excusez moi du dérangement


In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

3
Rejoignez-nous