Selectionnez plusieurs valeurs sur un même champ / PHP SQL

Résolu/Fermé
-
 flagoustou -
Bonjour,

Je souhaiterais sélectionner dans une table l'id d'un produit dont l'id de la catégorie = 2 et l'id de la catégorie = 3.

J'ai comme requête : SELECT * FROM 'product_category' WHERE idcategory IN ( '2', '3' )

Cette requête ne fonctionne pas car elle équivaut à faire des "OR" alors que moi je souhaite avoir des "AND" mais je n'y arrive pas.

Quelqu'un peut m'aider svp ?

Voici un aperçu de ma table

Table : product_category

id = 1
idcategory = 1
idproduct = 2

id = 2
idcategory = 2
idproduct = 1

id = 3
idcategory = 3
idproduct = 1

id = 4
idcategory = 3
idproduct = 2

Ici la requête me retourne 2 produit : le 1 et le 2 (alors que je ne souhaite avoir que le 1)



Merci beaucoup !

4 réponses

Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 190
Bonjour,

Il y a une contradiction dans ce que tu dis ... ou tes explications ne sont pas claires ...

Messages postés
838
Date d'inscription
vendredi 2 novembre 2012
Statut
Membre
Dernière intervention
17 décembre 2015
126
Bonjour !
Relis et corrige ton message, car c'est pas compréhensible, tu n'a pas dû te relire et fait quelque faute ...
Je souhaiterais sélectionner dans une table l'id d'un produit dont l'id de la catégorie = 2 et l'id de la catégorie = 3. 
Ceci ne retournerait rien, si il est dans la 2, il n'est pas dans la trois et inversement.

Ta requête
WHERE idcategory IN ( '2', '3' ) 
Retourne le produit N°2, 3 et 4 logiquement, et non le n°1 et 2 comme tu le dit.

Tu a vraiment dû taper ton message trop vite.
Re bonjour,

Non j'ai bien tapé mon message, si je sélectionne les produits via une requête en OR (j'en ai 2 idproduit différents dans ma table d'exemple ) il me retourne les 2 idproduct (je ne parle pas du champ ID) ici je ne l'ai pas écris mais je part du principe que j'ai un SELECT distinct(idproduct).... si je veux une liste de produit...

Par contre si, mon produit peut avoir plusieurs catégorie, par exemple : haut femme / t-shirt ... Donc l'id du produit est plusieurs fois dans ma table ;-)

Bref pour être un peu plus précis, je souhaiterais une requête qui me retournera uniquement les produits qui ont comme idcategory = 2 et comme idcategory = 3

Or je n'y arrive pas. La seule requête "potable" correspond à idcategory = 2 OR idcategory = 3. J'aimerais un idcategory = 2 AND idcategory = 3 mais ça ne fonctionne pas.

Quelqu'un peut m'aider ?
Re bonjour,

Non j'ai bien tapé mon message, si je sélectionne les produits via une requête en OR (j'en ai 2 idproduit différents dans ma table d'exemple ) il me retourne les 2 idproduct (je ne parle pas du champ ID) ici je ne l'ai pas écris mais je part du principe que j'ai un SELECT distinct(idproduct).... si je veux une liste de produit...

Par contre si, mon produit peut avoir plusieurs catégorie, par exemple : haut femme / t-shirt ... Donc l'id du produit est plusieurs fois dans ma table ;-)

Bref pour être un peu plus précis, je souhaiterais une requête qui me retournera uniquement les produits qui ont comme idcategory = 2 et comme idcategory = 3

Or je n'y arrive pas. La seule requête "potable" correspond à idcategory = 2 OR idcategory = 3. J'aimerais un idcategory = 2 AND idcategory = 3 mais ça ne fonctionne pas.

Quelqu'un peut m'aider svp?
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 190
Tant mieux si c'est clair pour toi !!!
Un autre forum m'a aidé et donc je met ici leur réponse qui fonctionne :


SELECT idproduct
FROM la_table
WHERE idcategory IN (2, 3)
GROUP BY idproduct
HAVING count(*) = 2


Bonne journée à tous.