Besoin d'aide en SQL

Besoin d'aide en SQL - SQL/NoSQL - Programmation

Marsh Posté le 18-04-2003 à 14:28:13    

J'ai une problème de SQL assez complexe à résoudre.
 
Voici un exemple :
 
j'ai 3 tables ....
 
Une table qui referencie des voitures.(id_voiture,id_proprio,id_garage) => a savoir les 2 derniers champs n'est pas obligatoirement rempli
Une table qui refernecie des proprietaires (id_proprio,nom_proprio)
Une table qui referencie des garages(id_garage, nom_gararge)
 
Comme faire pour selectionner toutes les voitures avec le nom du proprio, et le nom du gararge même si un des champs n'est pas renseigné ...
 
J'ai réussi de faire avec 2 tables (voiture + proprio) à l'aide d'un left join :
... voiture v left join proprio p on v.id_proprio=p.id_proprio ...
 
Mais quand je rajoute une 3eme table ça se gate !
 
Comment faire ?


Message édité par Shogun2002 le 18-04-2003 à 14:29:09
Reply

Marsh Posté le 18-04-2003 à 14:28:13   

Reply

Marsh Posté le 18-04-2003 à 14:40:05    

Shogun2002 a écrit :

J'ai une problème de SQL assez complexe à résoudre.
 
Voici un exemple :
 
j'ai 3 tables ....
 
Une table qui referencie des voitures.(id_voiture,id_proprio,id_garage) => a savoir les 2 derniers champs n'est pas obligatoirement rempli
Une table qui refernecie des proprietaires (id_proprio,nom_proprio)
Une table qui referencie des garages(id_garage, nom_gararge)
 
Comme faire pour selectionner toutes les voitures avec le nom du proprio, et le nom du gararge même si un des champs n'est pas renseigné ...
 
J'ai réussi de faire avec 2 tables (voiture + proprio) à l'aide d'un left join :
... voiture v left join proprio p on v.id_proprio=p.id_proprio ...
 
Mais quand je rajoute une 3eme table ça se gate !
 
Comment faire ?


comme pour deux tables sauf que tu rajoutes un AND et ta deuxieme jointure
 
 
EDIT : tp detected il me semble, non?


Message édité par polo021 le 18-04-2003 à 14:48:30
Reply

Marsh Posté le 18-04-2003 à 14:46:18    

polo021 a écrit :


comme pour deux tables sauf que tu rajoutes un AND et ta deuxieme jointure


 
Comme ça ?
 
select v.id, p.nom_proprio, g.nom_garage from voiture v left join proprio p on v.id_proprio=p.id_proprio and garage g on v.id_garage=g.id_garage

Reply

Marsh Posté le 18-04-2003 à 14:46:48    

Je test !

Reply

Marsh Posté le 18-04-2003 à 14:50:00    

Marche pas  :sweat:

Reply

Marsh Posté le 18-04-2003 à 14:52:10    

Shogun2002 a écrit :

Marche pas  :sweat:  


y faut verifier si tes champs sont pas null aussi

Reply

Marsh Posté le 18-04-2003 à 14:54:17    

Shogun2002 a écrit :

Marche pas  :sweat:  


Sous Oracle, on écrirai :
select v.id, p.nom_proprio, g.nom_garage  
from voiture v, proprio p, garage g  
where v.id_garage = g.id_garage (+) and
v.id_proprio = p.id_proprio (+)
 


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
Reply

Marsh Posté le 18-04-2003 à 14:57:48    

polo021 a écrit :


y faut verifier si tes champs sont pas null aussi


 
C pourquoi j'utilise les left join !
Il me rajoute aussi le null .... Enfin avec 2 tables ...

Reply

Marsh Posté le 18-04-2003 à 14:58:16    

tomlameche a écrit :


Sous Oracle, on écrirai :
select v.id, p.nom_proprio, g.nom_garage  
from voiture v, proprio p, garage g  
where v.id_garage = g.id_garage (+) and
v.id_proprio = p.id_proprio (+)
 
 


 
Moi je suis sous MSSQL (Sql Server)  :sweat:

Reply

Marsh Posté le 18-04-2003 à 15:05:15    

Shogun2002 a écrit :


 
C pourquoi j'utilise les left join !
Il me rajoute aussi le null .... Enfin avec 2 tables ...


desole je connaissais pas left join :jap:

Reply

Marsh Posté le 18-04-2003 à 15:05:15   

Reply

Marsh Posté le 18-04-2003 à 15:20:32    

c'est pas un and qu'il faut mettre, mais à nouveau "left join"

Reply

Marsh Posté le 18-04-2003 à 15:26:19    

MagicBuzz a écrit :

c'est pas un and qu'il faut mettre, mais à nouveau "left join"


 
Merci ça marche  :jap:

Reply

Sujets relatifs:

Leave a Replay

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