SQL AND et OR

Par pulsat, il y a 9 ans


Base de données MySQL

Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

$requete = 'SELECT * FROM reservation_ponctuel WHERE status="0" AND datecollecte="'.$dateText.'" OR datelivraison="'.$dateText.'" ';

Ce que je veux

Tout les champs status=0 qui correspondent à date collecte ou à date livraison

$requete = 'SELECT * FROM reservation_ponctuel WHERE (status="0" AND datecollecte="'.$dateText.'" ) OR (status="0" AND datelivraison="'.$dateText.'")' ;

Ce que j'obtiens

Le trie ne fonctionne pas !

9 réponses

Mikachu, il y a 9 ans

As tu essayé:

$requete = 'SELECT * FROM reservation_ponctuel WHERE status="0" AND (datecollecte="'.$dateText.'" OR datelivraison="'.$dateText.'")' ;

Par contre, tu aurais dû mettre ton post dans la cotégorie SQL, et non PHP. TU aurais sans doute pu avoir une réponse plus rapidement.

pulsat, il y a 9 ans

Non, cela ne fonctionne pas , en faite; la colorométrie du code m'indique que le OR n'est pas conforme ( je dev sur Sublime Text)
Je ne comprend pas d'ou vient le probléme ! je post sur SQL ( ou cas ou )

JM Mulet, il y a 9 ans

Et si tu limites ton select à une seule clause

$requete = 'SELECT * FROM reservation_ponctuel WHERE datecollecte='.$dateText' ;

ça donne quoi?

pulsat, il y a 9 ans

Toute la requete fonctionne :
WHERE status = 0 AND datecollecte = "$dateText"
WHERE status = 0 AND datelivraison = "$dateText"

Dés que j'inclus "OR", rien ne fonctionne ou plutot aucun trie ne s'opére dans le requette; que les dates est le status 0, 1 9, 12.
Mais Cela récupére bien les lignes correspondant à $dateText.

pulsat, il y a 9 ans

Je double le post pour expliquer mieux.
L'option imuable de la requete c'est le status="0" ( 0= en cours; 1 = fini)
Dans toute les lignes ou ce trouve status=0, il faut récupérer l'ensemble de la ligne si la colonne datelivraison ou datecollecte correspond à $dateText

Mikachu, il y a 9 ans

As tu essayé de jouer directement par PhpMyAdmon ou client lourd ta requete avec le OR ? voir si c est un prob PHP ou de requete.
Car perso moi je vois pas de défaut... (apres j ai peut ere pas les yeuw en face des trous)

JM Mulet, il y a 9 ans

faudrait voir la tete de la requete finale

echo $requete;

et publies la ici

pulsat, il y a 9 ans
SELECT * FROM reservation_ponctuel WHERE status="0" AND (datecollecte="vendredi 12 mai" OR datelivraison="vendredi 12 mai")

Apparement cela fonctionne maintenant, filezilla à du échouer lors du dernier UPDATE.

Je remercie la communauté Graphikart !

JM Mulet, il y a 9 ans

si status est un int et
datecollecte et date livraison sont des varchar dans l'idéale la requete devrait être

SELECT * FROM reservation_ponctuel WHERE status=0 AND ((datecollecte='vendredi 12 mai') OR (datelivraison='vendredi 12 mai'));

tu peux tester cette requete sur ta base (via phpmyadmin ou un requeteur)?