Bonjour,
J'ai un petit problème de jointure externe quand j'utilise le (+) sur une sous requête. Le problème c'est que dans cette sous requête j'ai un MAX() qui ne m'affiche pas de valeur s'il vaut 0.
Je simplifie mon schéma pour une meilleur compréhension :
Avec ceci, pour récupérer le dernier STATUT j'aurais tendance à faire:
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 DOSSIERS +-------+---------------------+---------------+ | DID | DATE_DEBUT | DESCRIPTION | +-------+---------------------+---------------+ | 0001 | 2008-10-20 10:32:28 | ... | | 0002 | 2008-10-20 11:23:31 | ... | +-------+---------------------+---------------+ GESTION_DOSSIERS +-------+---------------------+---------------+------------+ | DID | DATE_OPER | STATUT | COMPTEUR | +-------+---------------------+---------------+------------+ | 0001 | 2008-10-20 10:32:28 | Escaladé | 1 | | 0001 | 2008-10-20 14:19:03 | En cours | 2 | | 0001 | 2008-10-20 15:01:47 | Escaladé | 3 | +-------+---------------------+---------------+------------+
Mais là pour le DOSSIER.DID = 0002 il ne me retourne pas de ligne car il n'existe pas dans GESTION_DOSSIERS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT GD.STATUT FROM DOSSIERS D, GESTION_DOSSIERS GD WHERE D.DID = GD.DID(+) AND GD.COMPTEUR = ( SELECT MAX(COMPTEUR) FROM GESTION_DOSSIERS WHERE DID = D.DID );
J'ai pensé mettre ...GD.COMPTEUR (+)= ( SELECT MAX(COMPTEUR)...
mais j'obtiens l'erreur :
Donc là je sèche car j'ai besoin de récupérer d'autres infos en plus du STATUT même si le DID n'existe pas dans GESTION_DOSSIERS, mais l'enregistrement n'est tout simplement pas renvoyé.=> ORA-01799: une colonne ne peut être jointe extérieurement à une sous-requête
Merci d'avance pour votre aide,
Devether
Partager