Page 1 sur 1

requete avec plusieurs champs imbriqués

Posté : 05 nov. 2005, 21:02
par matbio
bonjour à tous ,
voila j'essaie de faire une requête sql dans une page en php avec mysql,,
le but etant de faire un tri sur plusieurs champs .

d'une part je sais faire des requêtes simples, donc la je coince :roll: !!

j'ai essayer d'imbriquer les requêtes mais ça ne marche pas ... d'après ce que j'ai compris les requêtes imbriquées ne fonctionnent pas avec mysql...

j'ai essayé les and et OR mais il me sort tous les résultats relatif à tous les champs demandés ...

voila le code en imbriqué :

Code : Tout sélectionner

$search="(SELECT * FROM (SELECT * FROM (SELECT * FROM tour WHERE region='$dord' OR region='$char' OR region='$limo') WHERE bedrooms>'$bed') WHERE price BETWEEN '$mini' AND '$maxi')";
avec ça j'ai une belle erreur sql


et l'essai avec des and et OR qui ne fonctionne pas :

Code : Tout sélectionner

$search="(SELECT * FROM tour WHERE bedrooms>'$bed' AND price>'$mini' OR price<'$maxi' OR region='$dord' OR region='$char' OR region='$limo')";
avec ça j'ai tous les enregistrement qui respectent certains champs mais pas d'autres ,le but et de ne garder que les enregistrements respectant tous les critères .

qqun pour me donner un coup de main !!! ?

merci

Posté : 05 nov. 2005, 21:13
par pascaltje
refais la dernière requete avec des AND à la place de OR dans le WHERE, ça devrait mieux marcher.

A+

Pascal

Posté : 05 nov. 2005, 21:21
par matbio
Merci mais ça ne marche pas mieux ....

il me donne tous les resultats pouvant satisfaire un champs ou un autre mais pas les resultats exclusif à tous les champs demandés !!!!

et je viens d'essayer que des and et la y'a carrrément plus rien !!! :lol:

Posté : 05 nov. 2005, 21:27
par pascaltje
Merci mais ça ne marche pas mieux ....

il me donne tous les resultats pouvant satisfaire un champs ou un autre mais pas les resultats exclusif à tous les champs demandés !!!!

et je viens d'essayer que des and et la y'a carrrément plus rien !!! :lol:
ça veut dire qu'aucun enregistrement ne correspond à toutes les conditions données.

A+

Pascal

Posté : 05 nov. 2005, 21:34
par matbio
En fait il me donne tous les enregistrements pouvant correspondre à une des conditions spécifiées, mais pas exclusivement les enregistrement répondant à
tous les critères demandés :
voila le resultat (pas comme je voudrais)d'une des requete):
requête effectuée
(SELECT * FROM tour WHERE bedrooms>='1' OR price>='0' AND price<='700000' AND region='dordogne'OR region='' OR region='')

résultat:
d45 100000 limousin 3
test1 50000 dordogne 3
n1112 200000 charente 8
donc la requete specifie bien qu'il n'y a que region=dordogne, mais vu qu'il se bas eaussi sur le reste et bien il me donne toutes les possibilités, alors que je ne voudrais que sur cet exemple l'enregistrement 2, vu que c'est le seul contenant dordogne, et que malgré les autres critère celui la bloque les autres enregistrements. la biensur j'ai retester des or et des and pour voir mais je ne pense pas que la solution soit la ??!!

j'espère me faire comprendre ;)

Posté : 05 nov. 2005, 22:47
par Cyrano
Tu peux utiliser des parenthèses:

Code : Tout sélectionner

SELECT * FROM tour WHERE (bedrooms>='1' OR price>='0') AND (price<='700000' AND (region='dordogne' OR region='' )) OR region='')
Ça, c'est juste un exemple, mais tu peux adapter.

Posté : 05 nov. 2005, 23:48
par matbio
Je crois que j'ai fini par trouver, il fallait organiser un peu tout ça ...

$search="(SELECT * FROM tour
WHERE (price >='$mini' AND price <='$maxi')
AND (region='$dord' OR region='$char' OR region='$limo')
AND (bedrooms>='$bed') )";


merci pour le coup de main !!!

Posté : 06 nov. 2005, 00:29
par Cyrano
[Résolu] ?

Posté : 07 nov. 2005, 14:49
par matbio
OUi pardon !!!
merci encore pour l'aide !