Coincée avec une requete

Résolu/Fermé
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 1 mai 2014 à 20:33
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 - 29 juil. 2014 à 16:42
Bonjour à tous,

J'ai une question sûrement très basique, mais j'ai beau chercher partout, je ne vois pas comment m'y prendre...

J'ai 3 tables, Produits, Propriétés et la table de jointure Prod_props, et j'ai besoin de faire des recherches du type "Le produit doit avoir la propriété X, la propriété Y et la propriété Z.
Quel type de requête je dois faire pour ça?

Merci d'avance pour votre aide, je sèche!!! :-/

4 réponses

Bonjour,

avez-vous déjà créer les tables ?

Sinon, je vous propose ce model.

produits
id_produit
nom_produit
....

Propriétés
id_propriété
nom_propriété
......


Prod_props
id_prod_props
id_produit
id_propriété
....


Pour savoir pour chaque propriété quel est le produit correspondant :

select produits.nom_produit, propriétés.nom_propriété
from propriétés, produits, prod_props
where produits.id_produit = prod_props.id_produit
and propriétés.id_propriété = prod_props.id_propriété;
4
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
25 juil. 2014 à 14:01
Bonjour,
Merci pour cette réponse, qui est toujours d'actualité! :-)
C'est bien la base que j'ai faite, mais cette requête me retourne simplement un liste de tous les produits avec les propriétés correspondantes. Moi j'ai besoin de chercher tous les produits qui ont plusieurs propriétés à la fois.
Je ne sais même pas si c'est possible de le faire en une seule requête...
0
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
25 juil. 2014 à 14:04
d'ailleurs je ne sais pas non plus si c'est indispensable : je voudrais chercher en une seule requête pour faire un script php plus léger, mais sinon, je peux aussi tester les propriétés les unes après les autres.
J'ai tort de vouloir le faire en une seule requête?
0
ephelya Messages postés 289 Date d'inscription mercredi 28 septembre 2011 Statut Membre Dernière intervention 20 juin 2023 2
29 juil. 2014 à 16:42
j'ai résolu le pb, pour ceux que ça intéresse, voici le code qui fonctionne

SELECT prd.*, count(prp.id) nb
FROM produits prd
INNER JOIN prod_props cpp
ON cpp.idprod = prd.id
INNER JOIN props prp
ON cpp.idprop = prp.id
WHERE prp.id IN (1,2,6)
group by prd.id
HAVING nb >=3

Evidemment, 1, 2 et 6 étaient les propriétés qui m'intéressaient, il suffit de les modifier
0