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 :

[DB2] Problèmes avec une Jointure externe sur des vues


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut [DB2] Problèmes avec une Jointure externe sur des vues
    Bonjour,

    voici le code de ma jointure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * FROM VEANEWS A, VEACATEGORIE B
    	LEFT OUTER JOIN VEAFICHIERJOINT C
    	ON A.CODE=C.CODE_NEWS
    WHERE A.CATEGORIE=B.CODE;
    Malgrès plusieurs passages sur différents cours, j'avous ne pas avoir réussit à trouver l'erreur (les erreurs...).

    Une de mes suppositions est que l'on ne doit peut être pas avoir le droit de faire des jointures externes sur des vues (toutes les tables utilisées dans le script ci dessus sont des vues).

    Est ce que vous pouriez m'éclairer sur ce point?

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 081
    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 081
    Points : 30 826
    Points
    30 826
    Par défaut
    C'est bien ça que tu veux faire ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * 
    FROM  VEANEWS AS A
      INNER JOIN VEACATEGORIE AS B
        ON A.CATEGORIE=B.CODE
      LEFT OUTER JOIN VEAFICHIERJOINT AS C
        ON A.CODE=C.CODE_NEWS
    ;
    Et quelle est l'erreur ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Oui en effet, ce que tu as écrit correspond en toute lettre à ce que je veux faire.

    L'erreur qu'il me donne est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    SQL0338N Une clause ON associée à un opérateur JOIN est 
    incorrecte.
     
    Explication: 
     
    Une clause ON associée à un opérateur JOIN est incorrecte pour 
    l'une des raisons suivantes : 
     
    o   La condition de jointure ne peut inclure aucune 
        sous-requête.  
     
    o   Les références de colonnes dans une clause ne peuvent porter  
        que sur des colonnes de tables situées dans la portée de      
        cette clause (incluses dans la même clause de table jointe    
        que la clause ON).  
     
    o   Les FULLSELECT scalaires ne sont pas autorisés dans les       
        expressions d'une clause ON.  
     
    o   Une fonction référencée dans une clause ON d'une jointure     
        complète externe doit être déterministe et n'avoir aucun     
        effet externe.  
     
    o   Une opération de déréférence (->) ne peut pas être 
        utilisée.  
     
    o   Une fonction ou une méthode SQL ne peut pas être utilisée.  
     
     
     
     L'instruction ne peut pas être exécutée.  
     
    Réaction de l'utilisateur: 
     
    Corrigez la clause ON de sorte qu'il soit fait référence aux 
    colonnes appropriées. Vous pouvez également supprimer les 
    sous-requêtes ou les FULLSELECT scalaires.  Supprimez toute 
    opération de déréférence, fonction SQL ou méthode SQL de la 
    clause ON.  
     
     Si vous utilisez une jointure complète externe, assurez-vous que 
    toutes les fonctions de la clause ON sont déterministes et n'ont 
    aucun effet externe.  
     
     SQLCODE : -338 
     
     SQLSTATE : 42972
    Pour les codes d'erreurs, je suis sous DB2, mais celà m'étonnerait fortement que mon erreur soit liée au SGBD.

    L'erreur me parle entre autre de sous requête, d'ou le fait que je supposes que l'erreur vient de ma vue, ou une requette est lancée sur la table en plus de ma requête sur les vues.

    L'erreur me dit pas mal de choses, mais j'avous que j'ai du mal à tout décoder.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 081
    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 081
    Points : 30 826
    Points
    30 826
    Par défaut
    Citation Envoyé par treivse
    L'erreur me parle entre autre de sous requête, d'ou le fait que je supposes que l'erreur vient de ma vue, ou une requette est lancée sur la table en plus de ma requête sur les vues.
    Et les vues sous-jacentes fonctionnent correctement ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par al1_24
    Et les vues sous-jacentes fonctionnent correctement ?
    Oui oui, elles marchent correctement, je m'en sert pour de nombreuses autres requêtes, et tout passe bien.

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Donne le code des vues...
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 17
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par al1_24
    C'est bien ça que tu veux faire ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT * 
    FROM  VEANEWS AS A
      INNER JOIN VEACATEGORIE AS B
        ON A.CATEGORIE=B.CODE
      LEFT OUTER JOIN VEAFICHIERJOINT AS C
        ON A.CODE=C.CODE_NEWS
    ;
    Et quelle est l'erreur ?
    Et bien ma fois, j'ai trouvé la solution, ou plutot tu as trouvés la solution.

    Lorsque l'on commence à s'amuser avec des jointures externes, il faut bien prendre la peine de tout marque en dur dans le pur respect de la norme.

    C'est à dire que le code que tu as marqué un peu au dessus ne fait pas d'erreurs.

    Je te remercie pour tes conseils

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

Discussions similaires

  1. Update avec une jointure externe
    Par feldi dans le forum SQL
    Réponses: 2
    Dernier message: 08/02/2012, 11h33
  2. [BO XIR2] Problème avec une jointure externe
    Par Fouinto dans le forum Designer
    Réponses: 6
    Dernier message: 13/01/2011, 17h19
  3. Ordre d'exécution dans une jointure externe
    Par Pero dans le forum Langage SQL
    Réponses: 17
    Dernier message: 20/09/2005, 12h22
  4. [CR9] faire une Jointure externe
    Par coldec dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 28/06/2005, 12h10
  5. calculer une moyenne avec une requete externe
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 16h02

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