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 et SQL. Discussion :

Problème jointure externe et restriction where


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Problème jointure externe et restriction where
    Bonjour à tous,

    J'ai un soucis avec la requête ci dessous, qui agit sur 2 tables. Le problème c'est que en mettant la restriction where OLSCAN00.SCANNE='2012' les articles de la table OLSTOK00 n'apparaissent pas tous dans le résultat.
    Si je ne met pas cette restriction where, qui est en fait l'année, je me retrouve avec des lignes en triple car la table reprend plusieurs années sous forme de ligne.
    Je voudrais que tout les articles de OLSTOK00 apparaissent dans le résultat, et que si il n'y a pas d'enregistrement dans la table OLSCAN cela me renvoi une valeur nulle, est ce possible ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT OLSTOK00.STARTI, OLSTOK00.STDES1, OLSTOK00.STTHEO, OLSTOK00.STENCC, OLSTOK00.STDISP, OLSTOK00.STRESE, OLSTOK00.STENFO, OLSCAN00.SCA001, OLSCAN00.SCA002, OLSCAN00.SCA003, OLSCAN00.SCA004, OLSCAN00.SCA005, OLSCAN00.SCA006, OLSCAN00.SCA007, OLSCAN00.SCA008, OLSCAN00.SCA008, OLSCAN00.SCA010, OLSCAN00.SCA011, OLSCAN00.SCA012
     
    FROM OLYMP_STOD/OLSTOK00 LEFT OUTER JOIN OLYMP_STOD/OLSCAN00 ON OLSTOK00.STARTI=OLSCAN00.SCARTI 
     
    WHERE OLSTOK00.STSOCI='09' and OLSTOK00.STDEPO='SK1' and OLSCAN00.SCANNE='2012'

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Cyrus59,

    Loi des séries oblige...

    Cyrus59, d'après toi, s'il n'y a pas d'enregistrement dans OLSCAN, quelle est la valeur de OLSCAN00.SCANNE ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Richard_35 Voir le message
    Bonjour Cyrus59,

    Loi des séries oblige...

    Cyrus59, d'après toi, s'il n'y a pas d'enregistrement dans OLSCAN, quelle est la valeur de OLSCAN00.SCANNE ?
    Bonjour Richard, ben je ne sais pas, la valeur doit être NULL, non ?

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Citation Envoyé par Cyrus59
    la valeur doit être NULL, non ?
    ==> exact !... donc, certainement pas à '2012', comme l'indique ton test... and OLSCAN00.SCANNE='2012'.

    Il faut donc prendre en compte le fait que OLSCAN00.SCANNE peut-être NULL.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Richard_35 Voir le message
    ==> exact !... donc, certainement pas à '2012', comme l'indique ton test... and OLSCAN00.SCANNE='2012'.

    Il faut donc prendre en compte le fait que OLSCAN00.SCANNE peut-être NULL.
    Ok, je viens de tester, j'ai donc ajouté dans le where "and OLSCAN00.SCANNE IS NULL" et le résultat ne me donne aucune donnée. En revanche si je met OR à la place, j'ai un résultat, mais la du coup je me retrouve avec des valeurs 2009, 2010, 2011...

    En fait je voudrais juste que la première table s'affiche en entier, et que seules les valeurs en 2012 viennent s'y imbriquer. Je ne sais pas comment faire.
    As tu une idée ?

  6. #6
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Et comme cela :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT OLSTOK00.STARTI, OLSTOK00.STDES1, OLSTOK00.STTHEO, OLSTOK00.STENCC, OLSTOK00.STDISP, OLSTOK00.STRESE, OLSTOK00.STENFO, OLSCAN00.SCA001, OLSCAN00.SCA002, OLSCAN00.SCA003, OLSCAN00.SCA004, OLSCAN00.SCA005, OLSCAN00.SCA006, OLSCAN00.SCA007, OLSCAN00.SCA008, OLSCAN00.SCA008, OLSCAN00.SCA010, OLSCAN00.SCA011, OLSCAN00.SCA012
    FROM OLYMP_STOD/OLSTOK00 LEFT OUTER JOIN OLYMP_STOD/OLSCAN00 ON OLSTOK00.STARTI=OLSCAN00.SCARTI 
    WHERE OLSTOK00.STSOCI='09' and OLSTOK00.STDEPO='SK1' and (OLSCAN00.SCANNE='2012' or OLSCAN00.SCANNE is null)
    ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Oui comme cela ça fonctionne mieux, je n'ai pas tout à fait le même nombre d'articles que dans la première table, mais je comprends pourquoi, je pense pouvoir contourner le problème en mettant les valeurs SCA001 à SCA012='0' pour avoir l'ensemble des articles.

    Merci de ton aide en tout cas

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

Discussions similaires

  1. Problèmes jointures externes
    Par B&B dans le forum SQL
    Réponses: 4
    Dernier message: 30/09/2008, 12h24
  2. Jointure externe avec clause WHERE
    Par ben53 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 17/03/2008, 08h56
  3. Réponses: 3
    Dernier message: 29/10/2007, 13h04
  4. Problème jointures externes BO
    Par leelee dans le forum Designer
    Réponses: 1
    Dernier message: 17/03/2007, 09h29
  5. jointure externe avec un where, me pose problème!
    Par Danae dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/07/2005, 17h37

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