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 :

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       |
+-------+---------------------+---------------+------------+
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
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
      );
Mais là pour le DOSSIER.DID = 0002 il ne me retourne pas de ligne car il n'existe pas dans GESTION_DOSSIERS.

J'ai pensé mettre ...GD.COMPTEUR (+)= ( SELECT MAX(COMPTEUR)...
mais j'obtiens l'erreur :
=> ORA-01799: une colonne ne peut être jointe extérieurement à une sous-requête
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é.

Merci d'avance pour votre aide,
Devether