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 :
Ca donne bien le résultat souhaité.
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 );
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 :
Mais alors, j'obtiens :
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 )) ;
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 ..
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
Quelqu'un aurait une idée?
Merci d'avance![]()
Partager