ORA-00904: Ungültiger Bezeichner in Unterabfrage
Warum die folgende Abfrage funktioniert nicht mit oracle?
select * from ENTITY_OWNERSHIP EO
where
(select count (*)
from (
select USER_ID
from ENTITY_OWNERSHIP
where ENTITY_OWNERSHIP.ENTITY_ID = EO.ENTITY_ID
)
) > 0
Produziert "ORA-00904: "EO"."ENTITY_ID": Ungültiger Bezeichner". Allerdings, wenn ich ersetzen EO.ENTITY_ID mit dem genauen Wert, zum Beispiel, 10181, dann funktioniert es.
UPDATE:
Die vollständige Abfrage sieht wie folgt aus:
select * from ENTITY_OWNERSHIP EO
where
(select count (*)
from (
select USER_ID
from ENTITY_OWNERSHIP
where ENTITY_OWNERSHIP.ENTITY_ID = EO.ENTITY_ID
intersect
select distinct group_id
from USERS.GROUPS
start with GROUP_ID in (select GROUP_ID from USERS.LK_GROUPS where USER_ID=10001)
connect by prior PARENTGROUP_ID=GROUP_ID
)
) > 0
- Die filter-Bedingung nicht tun. Sie zählen von Zeilen, die es in
entity_ownership
- aber Sie sind eine Auswahl aus der gleichen Tabelle. Diecount(*)
mindestens 1 für jeden Datensatz in der ursprünglichen Tabelle. - Ich gab ein Vereinfachtes Beispiel, es ist meine Schuld. Bitte beachten Sie auch die aktualisierte version.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du gehen Sie durch die Grundlagen, ein KORRELIERT
Subquery
hat Zugang zu den entsprechenden Tisch.. Aber Wenn es eine INNEREsubquery
, dieINNER Query
wird versucht, zuerst ausgeführt ... Also der anderen Tabelle die Bedingungen nicht acccessed, wie Sie sind, nicht zur Verfügung zu diesem Zeitpunkt.Verknüpfung zu verstehen ist.. wie bereits in den anderen Antworten..
Nun, Die Korrelierte Unterabfrage kann Zugang A.
Ich denke, man kann es mit
exists
statt: