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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Résultats avec des liaisons de table.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Résultats avec des liaisons de table.

n°1624404
papanorami​x
Posté le 16-10-2007 à 10:13:59  profilanswer
 

Bonjour,
 
je suis confronté à un problème que beaucoup ont dû avoir :  
 
j'ai une table 'produits' et une table 'voitures' ainsi qu'une table pour lier les deux ('liaisons_produits_voitures'), sachant qu'il peut y avoir plusieurs voitures par produit.
 
Ma question est : comment faire pour récupérer toutes les informations du produit ainsi que celles des voitures ?
 
Etant donné que si j'ai 3 voitures sur un produit, avec cette requete, MYSQL va me retourner 3 lignes  
 
 

Code :
  1. SELECT *
  2. FROM produits p
  3. LEFT JOIN liaisons_produits_voitures lpv
  4. ON lpv.id_produit=p.id
  5. LEFT JOIN voitures v
  6. ON v.id=lpv.id_voiture


 
Si à ceci, je rajoute une table circuits et la table de jointures liaisons_produits_circuits. Et qu'un produit peut avoir 3 voitures sur 4 circuits
 
 

Code :
  1. SELECT *
  2. FROM produits p
  3. LEFT JOIN liaisons_produits_voitures lpv
  4. ON lpv.id_produit=p.id
  5. LEFT JOIN liaisons_produits_circuits lpc
  6. ON lpc.id_produit=p.id
  7. LEFT JOIN voitures v
  8. ON v.id=lpv.id_voiture
  9. LEFT JOIN circuits c
  10. ON c.id=lpc.id_voiture


 
il va me retourner 3 voitures * 4 circuits = 12 lignes pour ce produit
 
Comment exploiter ces tables plus simplement ?
 
Merci pour votre aide
Clem


Message édité par papanoramix le 16-10-2007 à 11:28:27
mood
Publicité
Posté le 16-10-2007 à 10:13:59  profilanswer
 

n°1624551
Alisteroid
Posté le 16-10-2007 à 11:43:07  profilanswer
 

Tu peux espliquer clairement et détailler les infos que tu veux récupérer avec ta requete?

n°1624842
MagicBuzz
Posté le 16-10-2007 à 17:01:01  profilanswer
 

déjà, on dit pas "LEFT JOIN", mais "LEFT OUTER JOIN", et dans ton cas, c'est des "INNER JOIN" dont tu as besoin. pas la peine d'effondrer ta base avec des jointures externes quand elles ne sont pas neccessaires.
 
Première question : oui, c'est ça
 
Seconde question : oui et non, ça dépend. Si t'as 3 voitures sur chacun des 4 circuits, alors tu auras effectivement 12 lignes. Si tu as deux voitures sur un circuit, une sur un second, 3 sur le troisième et 1 sur le dernier, tu auras 2+1+3+1 = 7 lignes
à moins que tu ne persiste à coller des "left outer join" à toutes les sauces
 
 
Troisième question : sebondus++


Message édité par MagicBuzz le 16-10-2007 à 17:02:00
n°1624883
papanorami​x
Posté le 16-10-2007 à 17:45:32  profilanswer
 

Pourquoi est-ce que j'ai besoin de INNER JOIN. C'est LEFT (OUTER) JOIN qu'il me faut. J'ai besoin de mon produit, avec ou sans le nom de la voiture.
 
Merci pour tes réponses.

n°1624906
MagicBuzz
Posté le 16-10-2007 à 18:49:25  profilanswer
 

A ce moment, il faut être plus clair (sebondus++) parceque dans ta question rien ne laisse entendre que tu veux avoir des lignes y compris quand il n'y a pas de voiture associée à ton produit.


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

  Résultats avec des liaisons de table.

 

Sujets relatifs
[Oracle] 2 requetes faisant la meme chose, deux résultats differentsAjouter une colonne dans une table sql en php
[Debutant] Plusieurs TABLE l'une en dessous de l'autre[Résolu] utiliser une table tempo pour lire un fichier .xls
table model sorterStocker un vecteur colonne dans une table MySql
[MY SQL] Probleme pour mettre a jour une table [résolu]Mettre jour des champs de table via un recordset!possible?
creat table en php avec une fonction en +Incrémentation automatique d'un champ numéro dans une table access
Plus de sujets relatifs à : Résultats avec des liaisons de table.


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