SQl Abfrage

mrkanister

Benutzer
Beiträge
5
hallo,
habe folgendes Problem.
Ich habe eine Abfrage, die mir eine Anzahl von Tabellen ausgibt. Diese Tabellen haben eine Spalte gemeinsam.
Jetzt brauche ich noch eine Abfrage, die mir in alle diese Tabellen nach einem bestimmten Wert der oben erwähnten Spalte durchsucht und dann ausgibt, in welchen Tabellen dieser Wert vorkommt.
Ist das irgendwie möglich?

Also die erste Abfrage wäre so in der art
select tablename form test wherer columnname like 'test_column'

lg
 
Werbung:

PLSQL_SQL

Datenbank-Guru
Beiträge
176
Wenn ich dich Richtig verstehe, möchhtest du ALLE Datensätze aus

Tabelle A
und
Tabelle B

wo in der Spalte "X" der Wert 1 vorkommt??

Wenn ja, haben diese Tabellen die gleiche Struktur? d.h. z.B.: UserID, Familienname, Vorname, X

Lg
 

mrkanister

Benutzer
Beiträge
5
Hallo,
nicht ganz. Ich habe eine Abfrage, die mir verschiedene Tabellennamen ausgibt. Und anhand dieser Liste (dynamische Liste) möchte ich dann so Art For Schleifen machen, die in jeder Tabelle nach einen Wert einer Spalte abfrägt und mir dann ausgibt wie oft und in welcher Tabelle dieser Wert vorgekommen ist.
 

PLSQL_SQL

Datenbank-Guru
Beiträge
176
OK...

Dies ist ein kleines PLSQL - Script! Du verwendest doch Oracle!!!

Code:
begin
 
for my_rec IN ( select tablename from test
                            where columnname like 'test_column'
                        )
loop
 
  execute immediate 'select columnnname from '|| my_rec.tablename ||' where columnname like ''%Gesuchter Wert%''';
 
end loop;
 
end;


So in der Art.... habe ich jetzt trocken geschrieben!

Ich hoffe das hilft weiter! Lg
 

mrkanister

Benutzer
Beiträge
5
Hallo vielen dank
Das hilft mal weiter. Nur hab ich das mal mit meinen Tabellennammen probiert. Es kommt zwar das es erfolgreich war, jedoch wirft es mir kein ergebnis aus.
 

PLSQL_SQL

Datenbank-Guru
Beiträge
176
Also als SQL-Resultset ist es ein bischen schwieriger, aber vl. reicht dir dies hier!

Code:
declare

    v_ColumnName VARCHAR2(50);

begin
 
for my_rec IN ( select u.object_name as tablename from user_objects u
                            where u.object_type like 'TABLE'
                        )
loop
 
  execute immediate 'select count(*) from '|| my_rec.tablename ||' where COLUMNNAME like ''%Gesuchter Wert%''' INTO v_ColumnName;
 
  --ausgabe im SPOOL
  dbms_output.put_line( 'Tabellenname: ' || my_rec.tablename );
  dbms_output.put_line( 'Wie oft: ' || v_ColumnName );
 
end loop;
 
end;
 
Werbung:
Oben