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

Langage SQL Discussion :

Valeur null dans une jointure


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Points : 1 385
    Points
    1 385
    Par défaut Valeur null dans une jointure
    Voici la requete qui fait ce que je veux (quand tabC.chId = 60) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT tabA.ch1, tabB.ch2, tabD.ch3, tabD.ch4
    FROM tabA, tabB, tabC, tabD
    WHERE tabA.chId = 60 AND tabB.chId = 60 AND
    	tabC.ch5 = tabD.ch5 AND tabC.chId = 60
    ORDER BY tabA.ch6 DESC, tabB.ch7 DESC, tabC.ch7 DESC
    Mon problème est que parfois je n'ai pas tabC.chId = 60, dans ce cas la requête ne retourne rien alors que je voudrais qu'elle me retourne : val1, val2, null, null. J'ai essaié en ajoutant "(+)" après les tabC mais je n'ai pas null (il y a des valeur de tabD dont je ne veux pas)

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Utilise des LEFT JOIN plutôt que des clauses WHERE.

    Lorsque tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM A LEFT JOIN B ON A.id=B.id
    Tu va obtenir toutes les lignes de A et seulement les lignes de B pour lesquelles la condition est vérifiée.
    Si aucune ligne de B ne correspond à A, alors les champs correspondants auront la valeur NULL.

    Ta requête ressemblera à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT tabA.ch1, tabB.ch2, tabD.ch3, tabD.ch4
    FROM tabA
      LEFT JOIN tabB ON tabB.chId=tabA.chID
      LEFT JOIN tabC ON tabC.chId=tabA.chID
      LEFT JOIN tabD ON tabD.chId=tabA.chID
    WHERE tabA.chId=60
    ORDER BY tabA.ch6 DESC, tabB.ch7 DESC, tabC.ch7 DESC

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Points : 1 385
    Points
    1 385
    Par défaut
    Merci. Ca marche.

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

Discussions similaires

  1. Valeur NULL dans une jointure
    Par perdeak dans le forum Langage SQL
    Réponses: 14
    Dernier message: 13/09/2011, 18h29
  2. Réponses: 10
    Dernier message: 30/06/2006, 17h41
  3. clés et valeurs à null dans une HashMap typée
    Par Djakisback dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/06/2006, 13h04
  4. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02
  5. Affcecter une valeur NULL dans une requete paramétrée
    Par thiouwz2 dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/11/2004, 15h02

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