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 :

JOIN unique ?


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut JOIN unique ?
    Bonjour voila mon code suivant ne donne aucune reponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM accounts
    JOIN localites 
    ON accounts.id_localite = localites.id_localite
    JOIN rang
    ON accounts.id_rang = rang.id_rang 
    WHERE accounts.login ='noquioz'
    alors que celui la fonctionne parfaitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM accounts
    JOIN localites 
    ON accounts.id_localite = localites.id_localite 
    WHERE accounts.login ='noquioz'
    Pourquoi ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 251
    Par défaut
    Parce que tu n'as aucun enregistrement dans la table rang en concordance avec la table accounts.

    La requette JOIN (ou Inner Join, dit jointure interne) ne renvoie que les combinaisons ou des enregistrements sont renvoyés des 2 cotés de la jointure. JOIN n'admet pas qu'un coté de la jointure soit vide.

    Dans le cas contaire, il faut utiliser une jointure externe :
    - LEFT OUTER JOIN (externe gauche), Pour chaque enregistrement de la table de gauche, renvoie les données de la table de gauche et celles de la table de droite correspondantes si elles existent ou sinon des données vides
    - RIGHT OUTER JOIN (externe droite), pour tous les enregistrements de la table de droite, renvoie les données de la table de gauche si elles existent sinon des données vides et les données de la table de droite.

    Dans ton cas ça serait je pense une jointure gauche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * 
    FROM accounts 
    JOIN localites ON accounts.id_localite = localites.id_localite 
    LEFT OUTER JOIN rang ON accounts.id_rang = rang.id_rang 
    WHERE accounts.login ='noquioz'

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2008
    Messages : 85
    Par défaut
    D'accord! merci beaucoup de ton aide et surtout de ton explication =)
    c'est

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

Discussions similaires

  1. Pas de JOIN sous Oracle (vraiment dommage...)
    Par Isildur dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/03/2007, 11h28
  2. Unique + valeur par défaut
    Par ketalie dans le forum Outils
    Réponses: 4
    Dernier message: 02/07/2003, 15h29
  3. Export d'une vue avec LEFT JOIN
    Par schnourf dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/05/2003, 13h57
  4. Réponses: 4
    Dernier message: 22/05/2003, 11h15
  5. Suppression de la contrainte unique
    Par mika dans le forum SQL
    Réponses: 3
    Dernier message: 20/02/2003, 17h56

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