SQL Datenermittlung in mehreren Tabellen

Riker

Lieutenant
Registriert
Jan. 2005
Beiträge
862
Hallo!

Zuerst die Umgebung:

Oracle

Nun zu meinem Problem:

Ich habe einen Datensatz. Diesen nenne ich mal 'Lokation': 123456 (NUMBER)

Ich möchte nun ermitteln, in welcher meiner Tabellen dieser Datensatz noch vorkommt.
Um zu ermitteln, in welchen Tabellen dieser vorkommen könnte (weil für diesen Datensatz eine Spalte besteht), kann ich ja folgendes SQL anwenden:

Code:
select table_name
from all_tab_columns
where column_name = 'LOKATION'
and owner = 'SYS'

Es kann jedoch sein, dass in diesen Tabellen, die mir dann ausgegeben werden, diese bestimmte Zahl (123456) gar nicht vorkommt. Ich möchte also nur ein Ergebnis zurückbekommen, wenn dieser bestimmte Datensatz, nach dem ich suche, irgendwo drin vorkommt.
Ich habe schon folgendes versucht - aber es klappt nicht:

Code:
select *
from TABELLENNAME ,(select table_name
from all_tab_columns
where column_name = 'LOKATION'
and owner = 'SYS')

where lokation = 123456
and lokation in
(
select column_name
from all_tab_columns
where column_name = 'LOKATION'
);

Dazu sagt mir Oracle immer:

ORA-01722: Ungültige Zahl
01722. 00000 - "invalid number"
*Cause:
*Action:

Evtl. hat hier ja wer nen hilfreichen Tipp für mich?

Danke schonmal und Grüße!
 
lokation in
(
select column_name


--> column_name ist keine Zahl.
 
Mit diesem Subquery möchte ich ja auf die Spaltennamen zugreifen, die diese Kennungen enthalten.
Hier noch ein wenig kommentiert:

select *
from TABELLENNAME --> In dieser Tabelle stehen die Kennungen von 'Lokation'

,(select table_name
from all_tab_columns
where column_name = 'LOKATION'
and owner = 'SYS') --> Hier hole ich mir alle Tabellennamen, in denen 'Lokation' als Spalte definiert ist

where lokation = 123456 --> Hier definiere ich die genaue ID der 'Lokation', nach der ich schauen möchte

and lokation in
(
select column_name
from all_tab_columns
where column_name = 'LOKATION'
); --> Hier greife ich auf die Spaltennamen der oben definierten Tabellen zu, in denen ich die ID der 'Lokation' erwarte

Es ist das erste Mal, dass ich solch ein Subquery mache und weiß gerade einfach nicht weiter... :(
 
Deine zweite Subquery ist absolut sinnfrei:
Code:
and lokation in
(
select column_name
  from all_tab_columns
 where column_name = 'LOKATION'
);
Laut deiner Aussage steckt in den Spalten 'lokation' eine Number.
Mit deiner Subquery bekommst aber lauter Strings, in denen jeweils 'LOKATION' steht.

Ich kann es jetzt mangels Oracle nicht ausprobieren, aber ich vermute, dass du den Teil nach
Code:
where lokation = 123456
einfach ersatzlos weglassen kannst.
 
Zurück
Oben