Requete avec tables satellites - tout dans une seule ligne

Requete avec tables satellites - tout dans une seule ligne - SQL/NoSQL - Programmation

Marsh Posté le 28-02-2008 à 22:13:27    

Bonsoir,
 
voilà plusieurs fois que je rencontre un problème pour aller chercher mes informations dans une table.
 
J'ai une base mysql contenant :

  • une table offres
  • une table vehicules
  • une table options


puis des tables faisant la liaisons entre la table offres et les autres :

  • une table liaisons_offres_vehicules
  • une table liaisons_offres_options


j'ai organisé ma base ainsi parce qu'il peut y avoir plusieurs véhicules et options par offre.
 
Maintenant je bloque au niveau de ma requete....
 
J'aimerai avoir la liste de mes offres, les infos des véhicules et des options par offre en le moins de requetes possibles...
 

Code :
  1. SELECT o.*
  2. FROM vehicules v
  3. LEFT JOIN liaisons_offres_vehicules lov
  4.   ON lov.id_vehicule = v.id
  5. LEFT JOIN offres o
  6.   ON o.id = lov.id_offre
  7. LEFT JOIN liaisons_offres_options loo
  8.   ON loo.id_offre = o.id
  9. LEFT JOIN options op
  10.   ON loo.id_option = op.id
  11. WHERE v.marque LIKE 'pigeot'
  12. ORDER BY o.prix ASC


 
ici je suis parti de la table vehicules, puisque ma recherche est basée sur une marque de véhicule.
 
Bien évidement, cette requete me retourne plus de lignes que d'offres...
 
En gros, là je suis perdu.

 
Donc :  Comment feriez-vous pour que, pour chaque offre, vous ayez toutes les options et tous les véhicules ?

 
J'espère avoir été clair....  :hello:


Message édité par papanoramix le 28-02-2008 à 22:14:03
Reply

Marsh Posté le 28-02-2008 à 22:13:27   

Reply

Marsh Posté le 28-02-2008 à 22:55:23    

Finalement, le mieu serait d'avoir une ligne par offre, avec une colonne options contenant un tableau avec les infos des options, idem pour les véhicules. Genre tableau multidimensionnel comme on pourrait faire en php...
 
C'est possible ça ?

Reply

Marsh Posté le 03-03-2008 à 10:19:51    

non ? toujours pas d'idée ? ce problème semble classique pourtant.

Reply

Marsh Posté le 03-03-2008 à 13:51:38    

papanoramix a écrit :

j'ai organisé ma base ainsi parce qu'il peut y avoir plusieurs véhicules et options par offre.


 

papanoramix a écrit :

Bien évidement, cette requete me retourne plus de lignes que d'offres...


 
Ca me semble assez logique...
Si pour l'offre P, tu as 5 véhicules et que pour cette même offre P, tu as 3 options => tu auras 15 lignes en sortie...
Es-tu d'accord ?
 


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 03-03-2008 à 13:57:49    

oui, exactement
 
Est-ce que c'est ce qu'il faut faire ? je trie tout ça ensuite via php ? n'est-il pas possible de faire des tableaux multidimensionnels avec sql ?

Reply

Marsh Posté le 03-03-2008 à 14:25:17    

papanoramix a écrit :

Est-ce que c'est ce qu'il faut faire ?


Bin ça dépend surtout de ce que toi tu as besoin de faire...
Là, comme ça, c'est une solution.
Après ça dépend... Par exemple si tu as vraiment besoin d'avoir plusieurs dimensions, est-il vraiment interessant de toutes les remonter dès le depart?
 


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 03-03-2008 à 16:07:53    

et oui, par exemple au moment de lister toutes les offres, il me faut la liste des véhicules et des options à chaque fois !

Reply

Sujets relatifs:

Leave a Replay

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