Requête SQL

parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   -  
jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, supposons que dans une base de données MySQL, j'ai la table X :
"1" : "x = 0"
"2" : "x=1"
"3" : "x=2"
Donc trois éléments, l'un est égal à 1, l'autre 2 et le dernier 3.
Si je fais la requête :
SELECT * FROM X WHERE x = 0 AND x = 4
(Bien sûr la requête est mal formulée ici, je saurais la formuler comme il faut, mais c'est une question théorique ici !),
est-ce que ça doit me renvoyer quelque chose ?
Parce que la valeur 0 est bien dans le BDD, mais pas 4. Alors est-ce que le AND fais que si les deux conditions ne sont pas vérifiées, la requête ne renvoie rien ?
Merci d'avance pour vos réponses !

2 réponses

  1. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977
     
    Bonjour,

    Là ça ne renvoie rien car tu cherches une ligne où x est égal à O ET à 4 donc impossible.

    Il faut
    WHERE x = 0 OR x = 4 


    Ce n'est bien sur pas la requête finale si le champ contient "x = 0" il faudra
    WHERE x = "x = 0" OR x = "x = 4" 
    et encore car "x = 0" ce n'est pas la même chose que "x=0"

    cdlt

            Un étranger, c'est un ami qu'on n'a pas encore rencontré.
    1
  2. parousky Messages postés 325 Date d'inscription   Statut Membre Dernière intervention   6
     
    Merci pour ta réponse.
    Et si je veux que ça ne me renvoie rien si 0 et 4 sont dans la table. Si je fais
    WHERE x=0 OR x=4
    ça me renverra la ligne où x = 0. Quel est la commande pour que ça ne me renvoie rien ?
    Merci d'avance !
    0
    1. jee pee Messages postés 31875 Date d'inscription   Statut Modérateur Dernière intervention   9 977
       
      Pour que ça ne renvoie rien, ne pas lancer de requête ;-)

      La question n'est pas claire.

      SELECT * FROM X WHERE 'A' = 'B'
      ne renvoie rien.

      SI le test devait dire différent de 0 cela renvoie les lignes 1 et 2
      0