MySQL Forums
Forum List  »  French

Re: Requete a choix multiple
Posted by: Jean Molliné
Date: March 14, 2011 02:34PM

Je n'ai pas testé en montant les tables, mais à vue de nez ceci devrait fonctionner :
SELECT 
  tbo.id_objet,
  tbo.nom, 
  tbo.autonomie,
  tbo.fiche, 
  tbo.url, 
FROM table_objet tbo
  INNER JOIN table_liaison tl_1 ON tbo.id_objet    = tl_1.id_objet
  INNER JOIN table_couleur cl_1 ON tl_1.id_couleur = cl_1.id_couleur
  INNER JOIN table_liaison tl_2 ON tbo.id_objet    = tl_2.id_objet
  INNER JOIN table_couleur cl_2 ON tl_2.id_couleur = cl_2.id_couleur
  INNER JOIN table_liaison tl_3 ON tbo.id_objet    = tl_3.id_objet
  INNER JOIN table_couleur cl_3 ON tl_3.id_couleur = cl_3.id_couleur
  INNER JOIN table_liaison tl_4 ON tbo.id_objet    = tl_4.id_objet
  INNER JOIN table_couleur cl_4 ON tl_4.id_couleur = cl_4.id_couleur
  INNER JOIN table_liaison tl_5 ON tbo.id_objet    = tl_5.id_objet
  INNER JOIN table_couleur cl_5 ON tl_5.id_couleur = cl_5.id_couleur
WHERE cl_1.codeCouleur = 1
  AND cl_2.codeCouleur = 4
  AND cl_3.codeCouleur = 8
  AND (
       cl_4.codeCouleur = 122
    OR cl_4.codeCouleur = 143
  )
  AND (
       cl_5.codeCouleur = 398
    OR cl_5.codeCouleur = 765
    OR cl_5.codeCouleur = 454
    OR cl_5.codeCouleur = 333
  );
Si tu observes bien, j'effectue une jointure par couleur requise, donc les trois premières, celle du choix 2 et celle du choix trois.et dans la clause WHERE je précise les code de couleur à trier.

À tester et sans garantie ;)

______________________________________________________________
Une question bien formulée, c'est un problème bien compris : ça représente déjà les 3/4 de la réponse ;)

Options: ReplyQuote


Subject
Views
Written By
Posted
4121
March 11, 2011 12:55PM
Re: Requete a choix multiple
2152
March 14, 2011 02:34PM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.