Triple jointure JOIN LEFT SQL [Résolu]

coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 20 août 2005 à 12:05 - Dernière réponse : coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention
- 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

Afficher la suite 

Votre réponse

1 réponse

coucou747 12336 Messages postés mardi 10 février 2004Date d'inscription 30 juillet 2012 Dernière intervention - 20 août 2005 à 12:37
+3
Utile
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

Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de coucou747

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.