Page 1 sur 1

Problème de OR et AND sur une requête

Posté : 05 févr. 2008, 18:46
par Dominic
bonjour, voici la table suivante
CREATE TABLE `liste` (
  `reference` tinyint(4) NOT NULL auto_increment,
  `creation` datetime NOT NULL default '0000-00-00 00:00:00',
  `modification` datetime NOT NULL default '0000-00-00 00:00:00',
  `exploitant` varchar(50) NOT NULL default '',
  `enseigne` varchar(50) NOT NULL default '',
  `adresse1` varchar(50) NOT NULL default '',
  `adresse2` varchar(50) NOT NULL default '',
  `ville` varchar(50) NOT NULL default '',
  `postal` varchar(6) NOT NULL default '',
 `habitants` varchar(10) NOT NULL default '',
 `CA` varchar(15) NOT NULL default '',

 PRIMARY KEY  (`reference`),
  KEY `reference` (`reference`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
sur une requête j'ai la syntaxe suivante

Code : Tout sélectionner

SELECT * FROM liste WHERE postal LIKE '03%' OR postal LIKE '63%' OR postal LIKE '15%' OR postal LIKE '43%' AND CA > 0 AND CA < 149999 AND habitants > 0 AND habitants < 10000000 ORDER by reference ASC
mais les AND sont ignorés car certainement associés au dernier OR

comment dois-je modifier cette requête pour la rendre opérante sur les AND

merci de vos sugestions

Posté : 05 févr. 2008, 18:47
par h0_noMan
Met des parentheses pour séparer tes conditions.

Posté : 05 févr. 2008, 19:12
par Dominic
certes mais où exactement
je m'excuse d'insister et d'abuser de votre temps

Posté : 05 févr. 2008, 19:56
par Sékiltoyai
Bah c'est simple, si tu veux "a ou b" et "c ou d", tu fais (a OR b) AND (c OR d). Si tu veux a ou "b et c" ou d, tu fais a OR (b AND c) OR d.
Nous t'avons indiqué la marche à suivre, tu es le seul à savoir ce que tu veux obtenir, donc nous ne pouvons pas t'aider plus…

Posté : 06 févr. 2008, 09:31
par Dominic
ok maintenant ça marche
SELECT * FROM liste WHERE AND CA > 0 AND CA < 149999 AND habitants > 0 AND habitants < 10000000 AND (postal LIKE '03%' OR postal LIKE '63%' OR postal LIKE '15%' OR postal LIKE '43%') ORDER by reference ASC
merci du coup de main