Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2261 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  plusieurs jointures sur une meme table ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

plusieurs jointures sur une meme table ?

n°1691589
dapp
papango
Posté le 24-02-2008 à 18:49:27  profilanswer
 

hello
 
dites moi, j'ai 2 tables structurées comme suit par exemple (les champs sont assez explicites)
 
users (user_id,username)
cars (Car_id, car_name, owner_id, alternate_owner)
 
Quelle est la méthode la plus optimisée de ces 2 requetes?

Code :
  1. SELECT car_id, car_name, username
  2. FROM cars, users
  3. WHERE owner_id = user_id


Ou par  

Code :
  1. SELECT car_id, car_name, username
  2. FROM cars
  3. LEFT JOIN USERS on users.user_id = cars.owner_id


 
J'aimerais également avoir le nom du conducteur secondaire sans avoir à faire 2 requetes du style

Code :
  1. SELECT car_id, car_name, username, alternate_owner
  2. FROM cars, users
  3. WHERE owner_id = user_id


 
puis faire une boucle qui récupére le conducteur secondaire avant de refaire un
 

Code :
  1. tant que...
  2. SELECT username, user_id FROM users
  3. WHERE user_id = (...)
  4. fin tant que


 
il y a t'il une méthode qui ressemblerait à la suivante: ?

Code :
  1. SELECT U1.username as ownerName, U1.user_id ,U2.username as alternate_ownerName, U2.user_id
  2. FROM users as U1, users as U2, cars as C1, cars as C2
  3. WHERE U1.user_id = C1.owner_id
  4. AND U2.user_id = C2.alternate_owner


 
la requete n'arrive pas à aboutir chez moi, on dirait que ça boucle à l'infini...  :??:


---------------
Marre des reflex - je passe au M !
mood
Publicité
Posté le 24-02-2008 à 18:49:27  profilanswer
 

n°1691593
flo850
moi je
Posté le 24-02-2008 à 18:54:41  profilanswer
 

utilise plutot de jolie jointure, tu verrai que certaines de tes tables ne sont pas liée correctement et que tu recupere une montagne d'enregistrement
 
SELECT *
FROM cars as C1  
LEFT JOIN users as conducteurPrincipal ON C1.ownerID = conducteurPrincipal .user_id  
LEFT JOIN users as conducteurSecondaire ON C1.ownerID = conducteurSecondaire.user_id
 
 
là tu as toutes les voitures avec leurs conducteurs principaux et secondaire


---------------

n°1691766
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-02-2008 à 09:44:22  profilanswer
 

flo850 a écrit :

SELECT *
FROM cars as C1  
LEFT JOIN users as conducteurPrincipal ON C1.ownerID = conducteurPrincipal .user_id  
LEFT JOIN users as conducteurSecondaire ON C1.ownerID C1.alternate_owner = conducteurSecondaire.user_id


fixed :o


---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1691815
flo850
moi je
Posté le 25-02-2008 à 11:20:44  profilanswer
 

le copier collé c'est vraiment le mal :D


---------------


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  plusieurs jointures sur une meme table ?

 

Sujets relatifs
Matcher une regex plusieurs fois[MySQL] Problème avec Jointure ( et plusieurs COUNT sur même table)
Remplacer plusieurs procédure par une seule dans un moduleSelect count de plusieurs champs sous access
Pb avec plusieurs formPlusieurs count dans une requete = multiplication
Ameioration code, de saisi d'un fomulair et insertion des une tableImporter table externe avec sequence dans une base de données
[MiKroC] Appeller plusieurs procédures\sous programmes 
Plus de sujets relatifs à : plusieurs jointures sur une meme table ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR