Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème Exercices Colibri SQL chapitre 3 Exercice

Sujet résolu
    10 février 2022 à 22:15:47

    Bonjour à tous,

    Pour m'entrainer au langage SQL, je fais actuellement les exercices proposés sur le site https://colibri.unistra.fr qui sont intéressants pour comprendre toutes les notions.

    Je suis actuellement au chapitre 3, exercice 5 et me retrouve bloqué là-dessus :

    Je comprend qu'il y a un problème qui vient j'imagine du fait que je mette en FROM la table Clients qui ne comporte pas toutes les clés étrangères ... Voici ce que j'obtiens :

    Je vois donc que je n'obtiens que les noms dont les personnes ont loués des films, mais je ne vois pas comment afficher les noms de tous les clients et en même temps les films loués si il y en as ... je pense que l'utilisation de LEFT OUTER JOIN est justifiée, mais pourriez-vous m'aider à comprendre ce que je prend par le mauvais bout ?

    Merci d'avance.

    Adam

    • Partager sur Facebook
    • Partager sur Twitter
      11 février 2022 à 0:58:29

      Essaye en mettant LEFT JOIN pour ta deuxième jointure.

      https://www.w3schools.com/sql/sql_join.asp

      Regarde les différents types de jointures schématisés.

      En première LEFT jointure, tu prends tous les clients ET les films qui ont des clients (2ème schéma).

      En seconde INNER jointure, tu prends le résultat de la première jointure qui correspond avec les locations. Donc, ça retire forcément les clients qui ne louent pas. Tous les clients signifient ceux qui louent ET ceux qui ne louent pas.

      • Partager sur Facebook
      • Partager sur Twitter
        11 février 2022 à 10:07:16

        Merci de ta réponse :) 

        J'y ai pensé aussi hier soir en réessayant, mais je suis encore un peu à côté de la plaque :

        Jai mis ma seconde jointure en LEFT OUTER JOIN et cette fois j'obtiens ça :

        Tous les noms sont affichés, mais surtout, tous les films d'après ce que je comprend, qu'ils aient été loués ou pas ...

        • Partager sur Facebook
        • Partager sur Twitter
          11 février 2022 à 13:33:41

          Bonjour,

          Ton résultat est étrange ... De mon côté avec la requête ci-dessous je pense avoir le bon résultat ...

          SELECT
          	C.nomcli,
          	F.nomfilm,
          	L.duree
          FROM
          	Clients C
          		LEFT JOIN Locations L
          			ON C.codecli = L.codecli
          		LEFT JOIN Films F
          			ON L.codefilm = F.codefilm
          ORDER BY C.nomcli

          -
          Edité par Benzouye 11 février 2022 à 14:12:03

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            11 février 2022 à 14:20:24

            en inversant les jointures ? c'est en commençant par joindre la table Locations et ensuite la table Films

            SELECT nomcli, Films.nomfilm, Locations.duree
            FROM Clients
            LEFT OUTER JOIN Locations
                ON Locations.codecli=Clients.codecli
            LEFT JOIN Films
                ON Locations.codefilm = Films.codefilm
            ORDER BY nomcli


            Edit: Bon en fait c'est le même code que Benzouye (que je n'ai pas suffisamment pris la peine de regarder :-° )

            -
            Edité par umfred 11 février 2022 à 14:41:49

            • Partager sur Facebook
            • Partager sur Twitter
              11 février 2022 à 14:29:49

              umfred a écrit:

              en inversant les jointures ? c'est en commençant par joindre la table Locations et ensuite la table Films

              SELECT nomcli, Films.nomfilm, Locations.duree
              FROM Clients
              LEFT OUTER JOIN Locations
                  ON Locations.codecli=Clients.codecli
              LEFT JOIN Films
                  ON Locations.codefilm = Films.codefilm
              ORDER BY nomcli

              Effectivement, en faisant la Jointure avec Locations avant celle avec Films celà fonctionne, merci beaucoup :) 



              • Partager sur Facebook
              • Partager sur Twitter

              Problème Exercices Colibri SQL chapitre 3 Exercice

              × 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