left join X2

left join X2 - SQL/NoSQL - Programmation

Marsh Posté le 24-04-2013 à 18:50:26    

Bonjour,
 
Je voudrais lier 3 tables avec un left join :
 
j'ai une table restaurant
une table info
une table service
 
restaurant  possede une clé secondaire qui pointe vers info et une autre vers service
 
 
Je veux avoir tous les restaurants de la table restaurant avec leur service et les infos mais je ne comprends pas comment je dois faire pour recuperer les service, pour moi il suffit de rajouter un left join supplémentraire?
 
SELECT *  
FROM restaurant  
LEFT JOIN info  
ON id = id_etab
LEFT JOIN service
ON restaurant.id = service.id
 
 
La 1ere clause left fonctionne mais quand je lui adjoint le 2eme left join ça va plus du tout!
 
Merci!
 

Reply

Marsh Posté le 24-04-2013 à 18:50:26   

Reply

Marsh Posté le 24-04-2013 à 18:56:18    

restaurant.id et service.id sont les 2 clés primaires des 2 tables, ce n'est pas sur ces champs qu'il faut faire la liaison.

 

Il faut reprendre le modèle de la première liaison (id_etab est la clé secondaire qui pointe vers la clé primaire id de l'autre table)


Message édité par x1fr le 24-04-2013 à 18:56:28

---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 24-04-2013 à 20:49:01    

en theorie le 2eme left fait reference à la table restaurant ou info?
je vais revoir les clés demain, je n ai pa le modele sous la main...
merci

Reply

Marsh Posté le 24-04-2013 à 23:10:15    

Sur la liaison des 2


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 25-04-2013 à 09:19:57    

oui mais comme c'est un left join j'ai (d'apres mes souvenirs et ce que j'ai glané sur le net) toutes les entrées de la 1ere table (=restaurant), pour lesquelles on ajoute les entrées de la table info (qu'il y en ait ou pas) puis celle de la table service (là aussi qu'il y en ai ou pas), donc les left join font que les requetes suivantes se base bien sur l'intégralité de la table restaurant?
 
En theorie je devrais me retrouver avec tous les renseignements concernant la totalité des restaurants de la table restaurant qu'il y ait des infos ou non dans les tables service et info?
c'est bien ça?

Reply

Marsh Posté le 25-04-2013 à 09:28:43    

Oui pardon, j'ai l'habitude de l'écrire "LEFT OUTER JOIN", mais apparemment ça revient au même.
 
donc ta dernière phrase est bonne, reste que la liaison  sur les 2 clés primaires des tables restau et service n'est pas bonne. Une liaison doit se faire entre une clé primaire (ex : restaurant.id) et une clé étrangère (ex : id_etab)


---------------
Origin / PSN / Steam / Uplay : x1fr - bnet : Fab#2717
Reply

Marsh Posté le 25-04-2013 à 09:45:26    

ok merci beaucoup, c'est clair !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed