select from where multiple ?

Invité
Invité n'ayant pas de compte PHPfrance

03 avr. 2010, 01:01

bonsoir,
pardon pour ma question de débutant

comment je fais pour pour faire un where multiple

Code : Tout sélectionner

select from produit where category=130 AND 131
130 ca marche mais AND 131 ne marche pas

j'ai essayé avec la virgule pareil

si quelqu'un peux m'aider
merci

devlop78
Invité n'ayant pas de compte PHPfrance

03 avr. 2010, 03:06

select from produit where category=130 AND category=131

ViPHP
ViPHP | 2287 Messages

03 avr. 2010, 03:30

select from produit where category=130 AND category=131
Ce qui est la réponse exacte à sa question... :)

Mais ne risque pas de marcher par ailleurs. #-o
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphanteau du PHP | 27 Messages

03 avr. 2010, 10:37

salut, effectivement il n'y a aucune colonne de sélectionnée :cry:

un truc de ce type serait déjà mieux
SELECT * FROM `produit` WHERE `category`=130 AND `category` = 131
il serait de bonne augure d'optimiser la requête et de préciser les colonnes, un peu comme ceci
SELECT `col1`, `col2`, `col3` FROM `produit` WHERE `category` = 130 AND `category` = 131
Nota: respecter la casse rend le code plus lisible pour la suite ... et pour les autres, par exemple un SELECT est plus lisible qu'un select ( mais tout n'est qu'affaire de goûts personnels, le tout étant de bien suivre le même système de partout :) )
Modifié en dernier par MaximusCMS le 03 avr. 2010, 12:16, modifié 1 fois.
Développeur PHP à temps perdu ...
PHP Maximus CMS , un cms plus petit PHP Minimus, un cms minimaliste PHP Nanomus, un pare feu pour votre site PHP Firewall

Eléphant du PHP | 74 Messages

03 avr. 2010, 11:43

ou
SELECT * FROM `produit` WHERE `category`IN (130,131)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 avr. 2010, 12:57

salut, effectivement il n'y a aucune colonne de sélectionnée :cry:
C'est surtout que tu ne risques pas de trouver beaucoup d'enregistrements dont le champ "category" sera à la fois égal à 130 et dans le même temps égal à 131 ;)

Si tu veux les enregistrements correspondant à l'un OU à l'autre, il te faut utiliser l'opérateur OR :
WHERE category = 130 OR category = 131
ou comme l'a proposé datesta, l'opérateur IN qui permet de spécifier une liste de valeurs :
WHERE category IN (130,131)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 27 Messages

03 avr. 2010, 13:05

c'est vrai mdr, ahaha ça ne m'a même pas explosé aux yeux lol
bien vu ryle :)

Le OR qui tue le AND :)

mais ... il y a un mais, suivant comment est foutu la table, cette possibilité est envisageable toutefois ! ( un produit pouvant être présent dans 2 catégories en même temps comme 'petit' ET 'bleu' )
Développeur PHP à temps perdu ...
PHP Maximus CMS , un cms plus petit PHP Minimus, un cms minimaliste PHP Nanomus, un pare feu pour votre site PHP Firewall

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 avr. 2010, 13:15

mais ... il y a un mais, suivant comment est foutu la table, cette possibilité est envisageable toutefois ! ( un produit pouvant être présent dans 2 catégories en même temps comme 'petit' ET 'bleu' )
Oui mais non ;)

Dans la théorie, on pourrait effectivement avoir ces deux catégories, mais la recherche ne se ferait pas sur un champ unique comme ici (category), mais avec une jointure vers une autre table (du moins si la base est bien faite ;))

Un produit pourrait effectivement être présent dans plusieurs catégories, mais puisque ta table ne peut contenir qu'un seul champ nommé "category", cela signifierait que pour un même produit, tu aurais plusieurs enregistrements. Chacun d'eux serait alors soit petit, soit bleu, mais chaque enregistrement en base ne pourrait être à la fois petit et bleu :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 27 Messages

03 avr. 2010, 13:22

tout à fait ryle, pour moi aussi une catégorie est une autre table, et ou une seconde requête ou une jointure serait de bonne augure

Je disais 'oui possible', car j'ai déjà vu des tables un peu mal foutue comme ça
L'utilisateur devait alors dupliquer l'article pour l'avoir dans plusieurs catégories, la maintenance devenant impossible très rapidement ..

Bref, un JOIN ( et pas un joint :lol: ) serait la meilleure méthode comme tu le précises
Développeur PHP à temps perdu ...
PHP Maximus CMS , un cms plus petit PHP Minimus, un cms minimaliste PHP Nanomus, un pare feu pour votre site PHP Firewall

devlop78
Invité n'ayant pas de compte PHPfrance

03 avr. 2010, 19:16

Moi j'ai voulu juste répondre à la question ... j'avais bien vu que chercher deux valeurs différentes comme ça ne donnerait rien mais je fais bêtement ce qu'on me demande :)

Invité
Invité n'ayant pas de compte PHPfrance

03 avr. 2010, 23:36

merci bcp oui ca fonctionne

Code : Tout sélectionner

select from produit where category=130 AND category=131
edit
j'avais pas vu celle ci

Code : Tout sélectionner

SELECT * FROM `produit` WHERE `category`IN (130,131)
encore mieux ca évite de réecrire 2 fois category

merci