Coincée avec une requete

Résolu
ephelya Messages postés 296 Statut Membre -  
ephelya Messages postés 296 Statut Membre -
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

  1. Delphine
     
    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
  2. ephelya Messages postés 296 Statut Membre 2
     
    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
  3. ephelya Messages postés 296 Statut Membre 2
     
    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
  4. ephelya Messages postés 296 Statut Membre 2
     
    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