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 :

[REQUETE] jointure et valeur 'null'


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut [REQUETE] jointure et valeur 'null'
    Bonjour, je vous explique mon problème.

    J'ai une table qui se nomme dons avec les champs suivant : IDDONS et IDSUGGESTION et SUGGAUTRE.

    J'ai une autre table qui se nomme SUGGESTION (pour suggestion de montant) avec les champs suivant : IDSUGGESTION et DESCSUGGESTION. ex : 1 - 10$

    Si un utilisateur entre une valeur suggérer, le id de cette suggestion entre dans le champ IDSUGGESTION mais si l'utilisateur entre un montant par lui même, j'entre 'null' dans la bd.

    J'aimerais être capable de ressortir les données mêmes si la valeur est a null et d'afficher 'null'.

    Pour l'instant ma requete est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT D.IDDONS, IIF(D.IDSUGGESTION='null','null',S.DESCSUGGESTION) AS DESCSUGGESTION FROM Dons D
    INNER JOIN SUGGESTION S ON D.IDSUGGESTION = S.IDSUGGESTION
    je n'obtiens rien... par contre si j'essaye avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT D.IDDONS, IIF(D.IDSUGGESTION='null','null',D.IDSUGGESTION) AS DESCSUGGESTION FROM Dons D
    j'obtiens

    IDDONS - DESCSUGGESTION
    1 - 1 --> le deuxième 1 dois corresponde a la description suggestion 10$
    2 - 'null'
    3 - 'null'
    4 - 3

    merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 103
    Points : 28 394
    Points
    28 394
    Par défaut
    Utilisez une jointure externe

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    j'ai essayer et sa donne aucun résultat

    je suis capable de faire ressortir seulement la première row car il doit planter quand la valeur = 'null'

  4. #4
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Tu peux nous donner ta requête version jointure externe ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT D.IDDONS, IIF(D.IDSUGGESTION='null','null',S.DESCSUGGESTION) AS DESCSUGGESTION
    FROM Dons D
    LEFT OUTER JOIN SUGGESTION S ON D.IDSUGGESTION = S.IDSUGGESTION;

  6. #6
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Bon, sinon au pire, tu peux faire la jointure normale, et un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UNION ALL
    SELECT id, NULL
    FROM dons
    where IDSUGGESTION IS NULL

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    je comprend pas trop..

  8. #8
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Req1 UNION ALL Req2 : renvoie l'ensemble des lignes qu'auraient renvoyé les deux requetes séparément.

    Req1 est ta jointure. Pour les dons dont la suggestid IS NULL, la jointure ne renvoie rien :

    IDDONS - DESCSUGGESTION
    1 - 1 --> le deuxième 1 dois corresponde a la description suggestion 10$
    4 - 3

    Dans la Req2, tu demandes à juste choper les dons qui ont suggestid IS NULL donc :
    2 - 'null'
    3 - 'null'

    Et du coup, dans l'ensemble, ça te fait le bon résultat, non ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    oui mais je ne pense pas que sa marche IS NULL avec une valeur en string 'null' et non NULL...

  10. #10
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Euh, dans ce cas, tu arrives à adapter la solution proposée ?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    oui merci javais pas penser a un union !

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

Discussions similaires

  1. requete avec la valeur NULL
    Par Hinkel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/11/2008, 16h39
  2. [requete] JOINTURE et valeur null
    Par jeepibmx dans le forum SQL
    Réponses: 6
    Dernier message: 18/07/2008, 07h37
  3. Jointure et valeur NULL
    Par BiM dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/05/2005, 16h26
  4. Type de jointure et valeur NULL
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/01/2005, 14h22
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40

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