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 über 4 Tabellen mit Zeilen auf Spalten umwandlung

Dieses Thema im Forum "Oracle" wurde erstellt von Alfred68, 28 Januar 2014.

  1. Alfred68

    Alfred68 Neuer Benutzer

    Hallo zusammen,

    ich versuche ein Select Statemant zu erstellen für folgende 4 Tabellen.
    das Ergebnis was ich erreichen möchte ist unten dargestellt. Es handelt sich um eine Oracle 11g DB
    Über DB-Functions könnte ich es natürlich machen, ich würde dies aber gerne als reines SQL umsetzen.

    kann mir jemand ein Tipp geben ?

    vielen Dank schon mal

    Code:
    Table: T_A
    A_id, A_name
    1       a_n1
    2       a_n2
    3       a_n3
    
    Table: T_P
    P_id, P_name
    1        p_n1
    2        p_n2
    3        p_n3
    
    Table: T_L
    L_id, L_A_id,       L_name
    1      1            l_n1
    2      1            l_n2
    3      1            l_n3
    4      2            l_n4
    5      2            l_n5
    6      2            l_n6
    
    Table: T_G
    G_id, G_P_id,         G_L_id,      G_value
    1        1            1            J
    2        1            2            J
    3        1            3            J
    4        2            4            N
    5        2            5            N
    6        2            6            J
    7        3            1            N
    8        3            2            J
    9        3            3            N
    -
    -----
    Relations:
    T_A  1:n  T_L     3 Rows
    T_L  n:m  T_G 
    T_P  1:n  T_G
    
    oder :
    T_A          T_P
    1:n           1:n
    T_L  n:m  T_G
    
    ZIEL:
    P_id, A_id,      v1,    v2,   v3
    1        1        J     J     J
    2        2        N     N     J
    3        1        N     J     N
     
  2. Hony%

    Hony% Datenbank-Guru

    Hi Alfred68,

    dachtest du an Etwas in dieser Art:
    Code:
    WITH
    A AS (
    SELECT "P_id", "A_id", "L_id", "G_value"
    FROM "T_G"
    INNER JOIN "T_P"
    ON "G_P_id" = "P_id"
    INNER JOIN "T_L"
    ON "G_L_id" = "L_id"
    INNER JOIN "T_A"
    ON "L_A_id" = "A_id"
    ),
    B AS (SELECT * FROM A),
    C AS (SELECT * FROM A)
    
    SELECT A."P_id" AS P_id, A."A_id" AS A_id, A."G_value" AS v1, B."G_value" AS v2, C."G_value" AS v3
    FROM A
    INNER JOIN B
    ON A."P_id" = B."P_id"
    INNER JOIN C
    ON A."P_id" = C."P_id"
    WHERE A."L_id" < B."L_id"
    AND B."L_id" < C."L_id"
    Gruß
    Hony
     
    ukulele gefällt das.
  3. Hony%

    Hony% Datenbank-Guru

    Hier mal ein einfaches SQL-Dump für SQLite. Sollte daher mit jeder Datenbank funktionieren.

    Datenbanken ohne CTE können auch eine Sicht/View nutzen.
     

    Anhänge:

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