Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

SQl Abfrage

Dieses Thema im Forum "Oracle" wurde erstellt von mrkanister, 26 April 2012.

  1. mrkanister

    mrkanister Benutzer

    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
     
  2. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    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
     
  3. mrkanister

    mrkanister Benutzer

    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.
     
  4. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    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
     
  5. mrkanister

    mrkanister Benutzer

    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.
     
  6. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    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;
    
     
    Charly gefällt das.
  7. mrkanister

    mrkanister Benutzer

    Danke. Und wo wird dieser Output dann ausgegeben? Ganz verstehe ich das noch nicht
     
  8. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    mach vor "declare" folgenden Befehl:

    set serveroutput on
     
  9. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    hat dir dies nun geholfen?

    Bitte um Feedback! Danke und Lg
     
  10. mrkanister

    mrkanister Benutzer

    ja hat es. Vielen Dank
     
    PLSQL_SQL gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden