Partage
  • Partager sur Facebook
  • Partager sur Twitter

select avec multiples conditions

Sujet résolu
    30 juillet 2018 à 18:07:49

    Bonjour j'ai un souci avec une requête select je vous la présente
    SELECT * FROM compartiment WHERE IDACTIVITEPROPRIETAIRE=$idActivite AND ETATCOMPARTIMENT='VIDE' AND TYPECONTENEURACCEPTE='BOTH'OR TYPECONTENEURACCEPTE='BOTH'
    la requête me retourne bien des résultats mais ceux ci ne respectent pas toujours les conditions
    IDACTIVITEPROPRIETAIRE=$idActivite AND ETATCOMPARTIMENT='VIDE'
    Je suis presque sur que le problème vient de la gestion du AND et du OR
     Je suis à cours d'idée.
    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2018 à 19:37:53

      Bonsoir,

      Selon moi ton problème vient d'un manque de parenthèse au niveau de la clause WHERE. Il me semble évident que tu souhaites préciser IDACTIVITEPROPRIETAIRE  tu n'as donc pas besoin de parenthèse ici mais après que souhaites-tu réellement ? Tu ne peux pas avoir un AND et un OR avec la même condition (TYPECONTENEURACCEPTE = 'BOTH') et espérer avoir un résultat probant sans utiliser des parenthèses pour bien spécifier ce que tu souhaites.

      • Partager sur Facebook
      • Partager sur Twitter
        30 juillet 2018 à 20:37:06

        bONSOIR Barilo merci pour ta prompte réaction j'ai essayé de mettre des parenthèses mais le résultat n'est pas plus satisfaisant
        SELECT * FROM compartiment WHERE IDACTIVITEPROPRIETAIRE=15 AND ETATCOMPARTIMENT='ENTAME' AND (TYPECONTENEURACCEPTE='BOTH'OR TYPECONTENEURACCEPTE='BOTH')
        • Partager sur Facebook
        • Partager sur Twitter
          31 juillet 2018 à 9:06:32

          Bonjour,

          La requête de ton premier message correspond à ceci :

          SELECT *
          FROM compartiment
          WHERE
          	(
          		IDACTIVITEPROPRIETAIRE=$idActivite
          		AND ETATCOMPARTIMENT='VIDE'
          		AND TYPECONTENEURACCEPTE='BOTH'
          	)
          	OR TYPECONTENEURACCEPTE='BOTH'

          La requête de ton deuxième message a deux conditions identiques dans les parenthèses ... cela ne sert donc à rien ...

          Saurais-tu dire en français ce que tu attends de ta requête ?

          Genre : je veux la liste des compartiments pour une activité donnée, à l'état "vide" qui accepte les conteneurs "both"

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            31 juillet 2018 à 9:35:37

            Bonjour Benzouye désolé c'est vrai que je n'ai pas remarqué la boulette avec "both"

            En français je dirai: je veux la liste des compartiments pour une activité donnée, à l'état "vide" qui accepte les conteneurs "BOTH" et les conteneurs "CHRONO"

            • Partager sur Facebook
            • Partager sur Twitter
              31 juillet 2018 à 10:21:23

              Je reformulerai ta phrase par : 

              je veux la liste des compartiments pour une activité donnée ET à l'état "vide" ET qui accepte les conteneurs "BOTH" OU "CHRONO"

              Du coup la requête serait :

              SELECT *
              FROM compartiment
              WHERE
              	IDACTIVITEPROPRIETAIRE=$idActivite
              	AND ETATCOMPARTIMENT='VIDE'
              	AND (
              		TYPECONTENEURACCEPTE='BOTH'
              		OR TYPECONTENEURACCEPTE='CHRONO'
              	)
              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                31 juillet 2018 à 11:44:59

                super ça marche! t'es le meileur Merci.

                je marque résolu.

                • Partager sur Facebook
                • Partager sur Twitter

                select avec multiples conditions

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown