Oracle geschachtelte korrelierte Unterabfrage problem

Betrachten Tabelle1 und Tabelle2 mit einer eins-zu-viele-Beziehung ("Tabelle1" ist die master-Tabelle und Tabelle2 ist der detail-Tabelle). Ich möchte Datensätze aus Tabelle1, wo einige Wert ('XXX') ist der Wert des letzten Datensatzes in Tabelle2 der detail-Datensätze korrelierten auf table1. Was ich tun will, ist dies:

select t1.pk_id
  from table1 t1
 where 'XXX' = (select a_col
                  from (  select a_col
                            from table2 t2
                           where t2.fk_id = t1.pk_id
                        order by t2.date_col desc)
                 where rownum = 1)

Aber, da der Verweis auf Tabelle 1 (t1) in die korrelierte Unterabfrage ist zwei Ebenen tief, es öffnet sich mit einem Oracle-Fehler (ungültige id t1). Ich muss in der Lage sein, neu zu schreiben, aber die einzige Einschränkung ist, dass nur die where-Klausel geändert werden können (d.h. die anfängliche wählen Sie und aus muss unverändert bleiben). Kann es getan werden?

InformationsquelleAutor GriffeyDog | 2011-03-15
Schreibe einen Kommentar