Bonjour à tous.

Je vous explique mon soucis :

Je désire faire apparaître tous les champs d'une table A et afficher les détails qui leurs correspondent dans la table B.

Je fais donc un left outer join :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
select a.id  from tbl_a a left outer join tbl_b b on a.id = b.id  where b.pourcent = (select max(d.pourcent) from tbl_b d where d.id=b.id and b.equi = d.equi );
Ca donne bien le résultat souhaité.
Seulement, dans ce cas ci, si il n'y a pas de b.ID correspondant à a.ID .. a.ID ne s'affichera pas.
Je perds donc des enregistrements.

Donc il faut supprimer la clause WHERE et l'ajouter dans ON :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
 select a.id  from tbl_a a left outer join tbl_b b on (a.id = b.id AND b.pourcent = (select max(d.pourcent) from tbl_b d where d.id=b.id and b.equi = d.equi )) ;
Mais alors, j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ORA-01799: une colonne ne peut être jointe extérieurement à une sous-interrogation
J'illustre ici un cas simple mais en réalité je joins 5 ou 6 tables donc j'aimerais que ça reste assez simple avec peu de sous requête,union all ..

Quelqu'un aurait une idée?

Merci d'avance