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

SQL Oracle Discussion :

Problème sur les jointures externes


Sujet :

SQL Oracle

  1. #1
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut Problème sur les jointures externes
    Bonjour,

    La requête suivante échoue systématiquement, PL/SQL developper me renvoie systématiquement l'erreur : "CU"."CX_USER"."CX_USER_OID": invalid identifier au niveau de la ligne de la jointure

    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
    select cu.cx_user_oid,
    cu.user_name as FIRST_AND_LAST_NAMES,
    cu.user_id as USER_ID,
    csl.authentication_id as AUTHENT_ID,
    --token
    decode(cu.active_status, 'I', 'Inactive', 'A', 'Active', 'D', 'Deactivated') as STATUS,
    --culd.login_timestamp, -- a verifier, pas bon cx_user login date
    NVL(decode(cu.authorizer_status,'A','Y','I','N','N','N'), '?') as "IS_AUTHORIZER?",
    NVL(cu.is_initiater, '?') as "IS_INITIATER?",
    NVL(cu.is_watcher, '?') as "IS_WATCHER?"
    --cp.
    from connexis.cx_entity ce, connexis.cx_sealed_letter csl, connexis.cx_user cu, connexis.cx_profile cp
    left outer join connexis.cx_user_login_date culd on culd.cx_user_oid = connexis.cx_user.cx_user_oid
    where csl.cx_user_oid = cu.cx_user_oid
    and cu.cx_entity_oid = ce.cx_entity_oid
    and cp.cx_profile_oid = nvl(cu.cx_private_profile_oid, cu.cx_public_profile_oid)
    and ce.entity_id = 'toto'
    Je ne comprends pas pourquoi l'outil a l'air de refuser systématiquement toute tentative de jointure (de toutes les sortes)

    Pourriez-vous me donner un coup de main pour comprendre mon erreur ?

    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Quelle est votre version d'Oracle ?

    Edit : En fait c'est tout simple. Une fois que vous avez donné un alias à une table, vous devez l'utiliser.
    Un conseil : soit vous écrivez tout à la mode Oracle (, et (+)), soit tout à la mode ANSI, mais ne mélangez pas les deux.

    Votre requête écrite de façon normative :
    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
    SELECT cu.cx_user_oid,
           cu.user_name                   AS FIRST_AND_LAST_NAMES,
           cu.user_id                     AS USER_ID,
           csl.authentication_id          AS AUTHENT_ID,
           -- token
           case cu.active_status
             when 'I' then 'Inactive'
             when 'A' then 'Active'
             when 'D' then 'Deactivated'
           end                            AS STATUS,
           case
             when cu.authorizer_status = 'A'         then 'Y'
             when cu.authorizer_status in ('I', 'N') then 'N'
             else '?'
           end                            AS "IS_AUTHORIZER?",
           coalesce(cu.is_initiater, '?') AS "IS_INITIATER?" ,
           coalesce(cu.is_watcher  , '?') AS "IS_WATCHER?"
           --cp.
      FROM connexis.cx_entity ce
           INNER JOIN connexis.cx_user cu
             ON cu.cx_entity_oid = ce.cx_entity_oid
           INNER JOIN connexis.cx_sealed_letter csl
             ON csl.cx_user_oid = cu.cx_user_oid
           INNER JOIN connexis.cx_profile cp
             ON cp.cx_profile_oid = coalesce(cu.cx_private_profile_oid, cu.cx_public_profile_oid)
           LEFT OUTER JOIN connexis.cx_user_login_date culd
             ON culd.cx_user_oid = cu.cx_user_oid
     WHERE ce.entity_id = 'toto';

  3. #3
    Membre actif Avatar de crashtib
    Homme Profil pro
    Support technico-fonctionnel
    Inscrit en
    Avril 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Support technico-fonctionnel
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 221
    Points : 204
    Points
    204
    Par défaut
    Je vous remercie. Ce problème tenait finalement plus à un manque de rigueur et à une méconnaissance de débutant.

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

Discussions similaires

  1. Respect norme SQL par Hyperfile sur les jointures externes
    Par Arnaud B. dans le forum HyperFileSQL
    Réponses: 24
    Dernier message: 30/11/2010, 15h35
  2. Problème sur un jointure externe
    Par Isiker dans le forum Développement
    Réponses: 8
    Dernier message: 16/04/2009, 20h32
  3. Une question aux Grands du Sql, sur les jointures externes
    Par tonton67 dans le forum Développement
    Réponses: 3
    Dernier message: 26/01/2009, 09h08
  4. Choix dans les jointures externes
    Par WebPac dans le forum SQL
    Réponses: 2
    Dernier message: 21/01/2005, 12h34
  5. Réponses: 6
    Dernier message: 20/09/2004, 15h26

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