Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/01/2011, 16h43   #1
Membre habitué
 
Avatar de crashtib
 
Homme
Support technico-fonctionnel
Inscription : avril 2009
Messages : 215
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 : 215
Points : 148
Points : 148
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 :
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
crashtib est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 17h36   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 463
Points : 10 463
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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 :
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';
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 11/01/2011, 15h57   #3
Membre habitué
 
Avatar de crashtib
 
Homme
Support technico-fonctionnel
Inscription : avril 2009
Messages : 215
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 : 215
Points : 148
Points : 148
Je vous remercie. Ce problème tenait finalement plus à un manque de rigueur et à une méconnaissance de débutant.
crashtib est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h54.


 
 
 
 
Partenaires

Hébergement Web