Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide jointure

    14 mai 2018 à 15:07:49

    Bonjour,

    Je viens poster ici car j'ai besoin d'aide pour effectuer une jointure (je suis bloqué dessus depuis plusieurs jours) et je ne m'en sors vraiment pas. 

    Voici le schéma de ma base de données : 

    J'aimerais récupérer "Nom" et "Series" de la table 'Records' en utilisant une jointure en fonction du Nom dans la table Exercices et du Nom dans la table Utilisateurs. Je connais le "Nom" de la table "Exercices" et le "Nom" de la table Utilisateurs. Je sais qu'il faut que j'utilise ça comme "Where" mais le reste je suis perdu, j'ai fais plein d'essaies sans jamais que cela réussisse  et ça ma fais un sacré sac de nœuds dans la tete et je ne sais plus ou j'en suis. C'est pourquoi je viens poster ici.

    Est-ce que quelqu'un pourrait me guider svp ? 

    Merci.

    -
    Edité par xagn121 14 mai 2018 à 15:09:09

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2018 à 15:35:54

      Les jointures doivent être posé avec  INNER / OUTER JOIN avant la clause WHERE.

      Il est impératif de savoir les utiliser. OpenClassroom a un cours dessus avec MySQL https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/les-jointures-entre-tables

      Reviens vers nous avec ta requêtes utilisant les jointures si tu as encore des difficultés.

      • Partager sur Facebook
      • Partager sur Twitter
        14 mai 2018 à 17:15:09

        Sebajuste a écrit:

        Les jointures doivent être posé avec  INNER / OUTER JOIN avant la clause WHERE.

        Il est impératif de savoir les utiliser. OpenClassroom a un cours dessus avec MySQL https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/les-jointures-entre-tables

        Reviens vers nous avec ta requêtes utilisant les jointures si tu as encore des difficultés.


        Que penses tu de ça : 
        SELECT a.Nom, a.Series
        FROM records a
        INNER JOIN exercices b
        INNER JOIN utilisateurs_has_records c
        INNER JOIN utilisateurs d
        ON a.Exercices_idExercices = b.idExercices
        AND c.Utilisateurs_idUtilisateurs = d.idUtilisateurs
        WHERE b.Nom = 'Test' AND d.Nom = 'admin'
        • Partager sur Facebook
        • Partager sur Twitter
          14 mai 2018 à 17:44:08

          Hello, tu n'es pas obligé d'utiliser les mots clés Inner/Outer même si c'est préférable. Dans le tuto il commence d'ailleurs par faire des jointure interne avec des where = .

          Avant de nous demander ce qu'on en pense, as-tu testé ? Le résultat renvoyé te semble-t-il correct ?

          Pour moi il te manque une jointure entre records et exercices.

          • Partager sur Facebook
          • Partager sur Twitter
            14 mai 2018 à 17:45:25

            Tu dois mettre un ON sur chaque JOIN

            FROM ...
              INNER JOIN ...
                ON ... = ...
              INNER JOIN ...
                ON ... = ...
            WHERE ...



            • Partager sur Facebook
            • Partager sur Twitter
              14 mai 2018 à 19:11:05

              Xaaav67 a écrit:

              Hello, tu n'es pas obligé d'utiliser les mots clés Inner/Outer même si c'est préférable. Dans le tuto il commence d'ailleurs par faire des jointure interne avec des where = .

              Avant de nous demander ce qu'on en pense, as-tu testé ? Le résultat renvoyé te semble-t-il correct ?

              Pour moi il te manque une jointure entre records et exercices.


              Le resultat n'est pas vraiment correct puisque les records sortent mais son lié au mauvais utilisateur ! Peux tu m'expliquer pourquoi pour toi il manque une jointure entre records et exercices ?

              -
              Edité par xagn121 14 mai 2018 à 20:10:07

              • Partager sur Facebook
              • Partager sur Twitter
                15 mai 2018 à 9:03:27

                Bonjour,

                Il faut construire ta requête en essayant de tenir le fil des jointures ...

                Tu pars de la table utilisateurs puis tu mets la jointures vers la table de relation puis vers la table records puis vers la table exercice, à chaque fois avec la condition de jointure dédiée.

                SELECT r.Nom, r.Series
                FROM
                	utilisateurs u
                		INNER JOIN utilisateurs_has_records ur
                			ON u.idUtilisateurs = ur.Utilisateurs_idUtilisateurs
                		INNER JOIN records r
                			ON ur.Records_idRecords = r.idRecords
                		INNER JOIN exercices e
                			ON r.Exercices_idExercices = e.idExercices
                WHERE
                	e.Nom = 'Test'
                	AND u.Nom = 'admin'

                A utiliser des alias, autant leur donner une lettre plus parlante que a,b,c,d ...

                • Partager sur Facebook
                • Partager sur Twitter
                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                  15 mai 2018 à 9:18:27

                  xagn121 a écrit:


                  Le resultat n'est pas vraiment correct puisque les records sortent mais son lié au mauvais utilisateur ! Peux tu m'expliquer pourquoi pour toi il manque une jointure entre records et exercices ?

                  -
                  Edité par xagn121 il y a environ 12 heures


                  Tu cherches à récupérer des infos dans ta table records mais avec un filtre sur ta table exercices d'où la jointure. Je pense que tu devrais mieux comprendre avec la réponse de Benzouye.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Aide jointure

                  × 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