Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jointure sql

Sujet résolu
    25 avril 2011 à 12:04:29

    Bonjour, j'ai un petit soucis de requête SQL, j'ai une requête qui met trop longtemps à s’exécuter à cause du grand nombre de données.
    Je dispose de 2 tables ("films" et "liens_films") qui contiennent des présentation de films (TABLE films) et les liens de chaque films (TABLE liens_films).

    Concrètement j'aimerai récupérer les films ne contenant aucun liens (les films qui n'ont aucune jointure avec la table liens_films en fait).

    Voici ma requête SQL pour le moment :

    SELECT titre FROM liens_films l
    RIGHT JOIN films f
    ON l.id_films = f.id
    WHERE id_films IS NULL
    


    Pour info, cette requête s’exécute en 20 sec ...
    J’espère avoir été assez clair.
    Merci pour votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      26 avril 2011 à 4:37:13

      Essaie avec un left join au lieu de right.
      Sinon essaie avec une sous requete dans un IN : SELECT titre FROM films WHERE id NOT IN ( SELECT DISTINCT id_films FROM liens_films )
      • Partager sur Facebook
      • Partager sur Twitter
        26 avril 2011 à 7:41:38

        id et id_film sont bien des clés primaire et étrangère ??
        • Partager sur Facebook
        • Partager sur Twitter
          26 avril 2011 à 13:23:41

          La requête prend toujours autant de temps :(
          • Partager sur Facebook
          • Partager sur Twitter
            26 avril 2011 à 13:29:01

            Y a moyen de répondre à ma question ?
            • Partager sur Facebook
            • Partager sur Twitter
              26 avril 2011 à 13:43:44

              id est une clé primaire appartenant à la table films et id_films appartient à la table liens_films qui joint l'id de la table films
              • Partager sur Facebook
              • Partager sur Twitter
                26 avril 2011 à 13:45:02

                Et est-ce que id_film est une clé étrangère ??
                • Partager sur Facebook
                • Partager sur Twitter
                  26 avril 2011 à 13:45:45

                  Je comprends pas ce que tu entends par "clé étrangère"
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 avril 2011 à 13:47:12

                    http://www.w3schools.com/sql/sql_foreignkey.asp

                    Si tu crées une clé étrangère de id_film vers film, ça devrait accélerer ta requete.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 avril 2011 à 13:50:21

                      Euh en français je fais comment :s:), j'ai un peu de mal avec ton site anglais :s
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 avril 2011 à 13:51:32

                        ...
                        Tu utilises quoi comme logiciel ? Tu travailles en ligne de commande ? avec PHPMyAdmin ? Autre chose ??
                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 avril 2011 à 13:51:57

                          Je travaille avec PHPMyAdmin
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 avril 2011 à 13:55:04

                            Bon, alors dans la table liens_films, va voir la description de al tabel. Là ou tu as les colonnes, et cliques en dessous sur "détails"

                            Tu devrais voir un truc qui te permet d'ajouter un index. Clique dessus.

                            Dans type d'index, mets INDEX, et choisis id_film comme champ (laisse le reste vide).

                            Préviens quand ça c'est fait...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 avril 2011 à 13:59:36

                              MERCI BEAUCOUP :), et tu peux m'expliquer concrètement ce que je viens de faire, sa marche mais j'aimerai quand même comprendre :)
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 avril 2011 à 14:03:14

                                T'as créé un index... Très franchement, dois y avoir 3000 explications dispo sur internet.

                                Et je suis en train de rédiger un tuto sur SQL et les prochains chapitres porteront justement sur les index et les clés donc je t'invite à y faire un tour d'ici quelques semaines. Pas le courage de te retaper un explication.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 avril 2011 à 14:17:22

                                  Ok bah merci quand même :)
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Jointure sql

                                  × 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