Partage
  • Partager sur Facebook
  • Partager sur Twitter

MySQL cours

Quiz

Sujet résolu
    12 janvier 2021 à 19:38:20

    Bonjour,

    Dans le cours « Administrez vos bases de données avec mySQL » le premier quiz « faites vos premiers pas... »

    Question 7 :

    Parmi les requêtes suivantes, laquelle permet de sélectionner les chats femelles et les chiens mâles ?

    la réponse : 

    SELECT * FROM Animal WHERE (espece = ‘chat’ AND sexe = ‘F’) OR ( espece =  ‘chien’ AND sexe =‘M’)

    Alors pourquoi mettre « OR » alors qu’on veut les chiens mâles  ET les chats femelles ?
    Si je met « OR » il va m’afficher les chiens mâles OU les chats femelles Non ? alors qu’ici on demande les deux ? 

    Dans ma logique :

    tu veux qu’on te présente les voiture rouge et les vélos bleu. Tu veux voir les deux.

    Alors je vais dire par rapport à la requête SQL :

    (type = voiture AND color=red) AND (type=vélo AND couleur=bleu)

    je comprend pas la logique derrière la correction de la question 7. 

    merci de m’éclairer :) 

    -
    Edité par MickaelSayer 12 janvier 2021 à 20:12:42

    • Partager sur Facebook
    • Partager sur Twitter
      12 janvier 2021 à 21:28:18

      Bonjour,

      Si tu mets un AND aucun résultat ne sortira car un enregistrement ne peut avoir deux valeurs différentes pour la même colonne ...

      Un animal ne peut être mâle et femelle à la fois ...

      Un animal ne peut être chat et chien à la fois ...

      C'est donc bien ( chat et femelle ) ou ( chien et mâle).

      -
      Edité par Benzouye 12 janvier 2021 à 21:28:57

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        12 janvier 2021 à 21:45:02

        Merci :) 

        je pensais qu’il était possible de recevoir les enregistrements des chats femelles et chiens mâles en même temps.

        mais visiblement non, si j’ai bien compris. 

        c’est bon à savoir, et je comprend mieux maintenant.

        et c’est vraie que j’avais auparavant, jamais essayé de faire ce genre de request :)

        Mais comment la requête fait pour choisir qu’elle info elle va retourner ? Les chats ou les chiens ? L’ordre a une importance ? 

        je testerai cet requête ce soir, je comprendrai mieux :) 

        merci en tous cas :)

        -
        Edité par MickaelSayer 12 janvier 2021 à 22:08:47

        • Partager sur Facebook
        • Partager sur Twitter
          13 janvier 2021 à 12:27:40

          MickaelSayer a écrit:

          je pensais qu’il était possible de recevoir les enregistrements des chats femelles et chiens mâles en même temps

          C'est possible, c'est bien ce que fais la requête de la solution proposée ...

          Imaginons que la table Animal contienne ces deux lignes :

          idnomespecesexe
          1 Minouche Chat Femelle
          2 Médor Chien Mâle

           La question du quizz implique de retourner les deux lignes.

          Si tu écris :

          SELECT *
          FROM Animal
          WHERE
              (
          		espece = 'chat'
          		AND sexe = 'F'
          	) AND (
          		espece = 'chien'
          		AND sexe ='M'
          	)

          Les parenthèses n'ont ici aucune importance, aucun impact, cela revient à écrire :

          SELECT *
          FROM Animal
          WHERE
          	espece = 'chat'
          	AND sexe = 'F'
          	AND espece = 'chien'
          	AND sexe ='M'

          Ce qui est impossible, la colonne espece ne peut être égale à chat ET à chien pour un même enregistrement. Et idem pour la colonne sexe ...

          En revanche, si tu écris :

          SELECT *
          FROM Animal
          WHERE
          	(
          		espece = 'chat'
          		AND sexe = 'F'
          	) OR (
          		espece = 'chien'
          		AND sexe ='M'
          	)

          Ici les parenthèses ont une importance, un impact, il y a 2 groupes de conditions, qui signifient : "Je veux les enregistrements qui correspondent au premier groupe OU au deuxième". Ce qui peut se reformuler par : "Je veux les enregistrements qui correspondent au premier groupe ET les enregistrements qui correspondent au deuxième groupe".

          -
          Edité par Benzouye 13 janvier 2021 à 12:30:26

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

          MySQL cours

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown