IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Résultat jointure entre deux tables


Sujet :

MySQL

  1. #1
    Membre éclairé Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce intéressant?
    Inscrit en
    Juin 2009
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Est-ce intéressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Points : 707
    Points
    707
    Par défaut [Reglé] Résultat jointure entre deux tables
    Bonjour,

    Voila, j'ai un souci très simple et facilement résolvable mais je galère et j'arrive pas à trouver la solution malgré mes recherches.

    A ma droite, j'ai ma table Films et à gauche, ma table Genre. Pour chacun des deux, j'ai un ID unique.

    Je voudrais faire ressortir par une requête les ID de chaque films associés à un Genre, sachant qu'un film n'est pas forcément associé à un genre, sachant que dans ma table Films, je renseigne l'ID Genre si celui-ci existe.

    En gros, en requete, ça donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT ID.Films,
     ID.Genre
    FROM Films,
     Genre
    WHERE
     ID_GENRE.Films = ID.Genres
    Cependant, quand je fais cette requete, il me resort bien tous les ID Films, mais il m'associe un ID Genre à tous les films (même ceux qui n'en ont pas).

    J'ai cherché un peu sur le net (bah oui, un peu quand même), et j'ai trouvé un LEFT OUTER JOIN. Mais je ne comprends pas le fonctionnement et si simplement il n'existe pas une solution plus simple.

    Merci pour vos réponses
    Question existentielle:
    "Pourquoi les portes des établissements ouverts 24h/24 ont-ils des serrures... O_o?"

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 707
    Points
    23 707
    Par défaut
    Bonjour,

    Pour pouvoir faire ça, il faut passer par une jointure externe entre les 2 tables.
    Toutes les explications dans ce tutoriel : http://sqlpro.developpez.com/cours/sqlaz/jointures/.

    Au passage, prends vite l'habitude d'écrire les jointures de manière normalisée (avec les mots clefs INNER JOIN, LEFT JOIN... ON...). C'est plus facile pour maintenir les requêtes par la suite et contrôler ce qu'on interroge .

    Dans ton cas présent, la requête que tu souhaites doit ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT f.ID, g.ID
    FROM Films f
    LEFT JOIN Genre g ON f.ID_GENRE = g.ID
    Normalement, ça devrait te ramener plus de films que ta requête précédente, parce que je doute que les films sans genre aient été ramenés par une jointure interne .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éclairé Avatar de keitaro_bzh
    Homme Profil pro
    Est-ce intéressant?
    Inscrit en
    Juin 2009
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Est-ce intéressant?

    Informations forums :
    Inscription : Juin 2009
    Messages : 320
    Points : 707
    Points
    707
    Par défaut
    Merci, c'était la solution.

    On m'a expliqué le LEFT OUTER JOIN et ça fonctionne.

    PS: j'avais lu la doc, mais je n'avais pas compris le fonctionnement, d'ou ma question sur le forum!
    Question existentielle:
    "Pourquoi les portes des établissements ouverts 24h/24 ont-ils des serrures... O_o?"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jointure entre deux tables ?
    Par spirit69 dans le forum Access
    Réponses: 2
    Dernier message: 05/12/2006, 20h21
  2. jointure entre deux tables mysql
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 23/04/2006, 20h08
  3. [MySQL] Jointure entre deux tables
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/10/2005, 18h55
  4. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  5. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo