Requête SQL Many-to-Many

Par lynxfg, il y a 11 ans


Base de données MySQL

Bonjour,<br/>
J'ai 3 tables dans ma base de données : <br/><br/>
-categories (id, name).<br/>
-products(id,name,description,price) <br/>
-catgories_product(category_id, product_id)<br/><br/>

un produit peut avoir plusieurs catégories ( exemple : produit X appartient à 2 catégories 'mode-hommes et mode-femmes) .<br/>
une catégorie peut appartenir à plusieurs produits. <br/>

Je veux une requete SQL qui permette de selectionner tout les produits qui appartiennent aux catégories Mode-hommes ET Mode-femmes. (Avec une conditions AND) <br/>

Merci d'avance pour votre aide.

2 réponses

Huggy, il y a 11 ans

Si j'ai bien compris, tu souhaites faire l'intersection
MySQL ne gère par le mot clé INTERSECT qui serait bien pratique :-(
tu peux t'en sortir comme ceci (en supposant qu'on ait les 2 id des deux catégories h et f que j'appelle $homme et $femme)

SELECT P.* FROM products P INNER JOIN categories_product CP ON (P.id=CP.product_id) WHERE CP.category_id=$femme AND CP.product_id IN (SELECT P.id FROM products P INNER JOIN categories_product CP ON (P.id=CP.product_id) WHERE CP.category_id=$homme)
lynxfg, il y a 11 ans

Merci bien Huggy.
ça marché