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

Requêtes MySQL Discussion :

[MYSQL] Question sur jointure


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut [MYSQL] Question sur jointure
    Bonjour à tous !!
    Voilà, j'ai la requête suivante qui me sort 2 enregistrements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT msg.UNB, msg.UNOA, cmd.BGM, cmd.NBLIGNES, cmd.DATE_RECEPTION_DOC, cmd.HEURE_RECEPTION_DOC, cmd.CODE_STATUT_1, cmd.CODE_STATUT_2, cmd.TYPE_MESSAGE
    FROM message_in msg, commande_in cmd, compte com
    WHERE cmd.BGM LIKE '%1254%'
    AND cmd.NADDP = com.NADDP
    AND cmd.BGM != ''
    AND com.PAYS = 'NL'
    AND com.CODE_SUPPLIER
    IN (
    'M'
    )
    AND msg.ID_MESSAGE = cmd.ID_MESSAGE
    ORDER BY cmd.DATE_RECEPTION_DOC, cmd.HEURE_RECEPTION_DOC, cmd.BGM

    Mais lorsque j'enlève la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND cmd.NADDP = com.NADDP
    J'obtiens 50000 résultats dont pleins d'identiques !!

    Je voulais savoir pourquoi cette ligne était si importante, quell est sa fonction ?
    Merci pour vos réponses et bonne matinée.

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND cmd.NADDP = com.NADDP
    c'est une jointure entre deux tables. En fait tu indiques ici, que tu souhaite avoir pour un NADDP dans cmd, son ou ses NADDP identique dans com et c'est tout.

    Si tu ne mets pas cette ligne, tu fais ce qui s'appelle un produit cartésien, c'est à dire que pour chaque ligne de cmd, tu vas ramener toutes les lignes de com et inversement....

    D'ou le nombre énorme de lignes retournées...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Voilà qui est clair !!
    En gros, si je mets pas cette ligne, je récupère n fois le même enregistrement où n sera le nombre de NADDP de ma table compte ... ?

  4. #4
    Membre habitué

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 145
    Points : 180
    Points
    180
    Par défaut
    En gros, si :

    x = nombre de ligne de cmd
    y = nombre de ligne de com

    tu obtiens x * y lignes en résultat.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    801
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 801
    Points : 314
    Points
    314
    Par défaut
    Ok, j'ai compris.
    Merci pour tes explications !!!

    Bonne journée

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

Discussions similaires

  1. [mysql] questions sur la conception
    Par Alexdezark dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/12/2008, 03h03
  2. [MySQL] Pour un projet php/mysql : questions sur le langage et l'environnement
    Par 3wicha dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/07/2007, 18h21
  3. question sur jointure
    Par epeichette dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/05/2007, 12h11
  4. [MySQL] Question sur les GROUP BY
    Par Coladin dans le forum Langage SQL
    Réponses: 5
    Dernier message: 21/04/2006, 14h25
  5. select sur plusieurs table, question sur jointure
    Par Schulman dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/09/2004, 13h54

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