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

Bestimmte Werte selektieren

Dieses Thema im Forum "Oracle" wurde erstellt von Kathi14, 7 Dezember 2014.

  1. Kathi14

    Kathi14 Benutzer

    Hallo zusammen,

    ich habe zwei Tabellen:

    A
    id
    aa
    bbb
    cc
    ccc
    dd
    ddd
    ee
    eee

    B
    id

    dd
    eee

    und ich möchte folgende Werde bekommen:
    aa
    bbb
    ccc
    dd
    eee

    Mit meinem select bekomme ich die Werte: aa, bbb, ccc, dd, ddd, ee, eee. Wie soll ich aber ddd und ee rausfiltern?

    select case when MIN (a.id) <> MAX (a.id) then MAX (a,id)
    else MIN (a.id)
    end id_neu
    , nvl(b.id, -1)
    FROM a
    , b
    where a.id = b.id (+)
    group by nvl(b.id, -1)
    order by 1

    Vielen Dank für eure Hilfe!

    Grüße,
    Kathi
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Bahnhof.
    Bitte erklre es so,, daß es nachvillziehbar ist. Nutze bitte auch die Code-Tags hier, siehe Hilfe. Min() und max() machen bei Strings relativ selten einen Sinn. Nutze bitte auch expliziete Joins.
     
  3. Kathi14

    Kathi14 Benutzer

    :( Entschuldige

    Es sind also zwei Tabellen mit den Strings:

    Tabelle A:
    Spalte: id
    • aa
    • bbb
    • cc (Substring von ccc)
    • ccc
    • dd (Substring von ddd)
    • ddd
    • ee (Substring von eee)
    • eee


    Tabelle B:
    Spalte: id
    • dd
    • eee

    Ich brauche von der Tabelle A die Strings, die in der Tabelle B nicht vorhanden sind: also aa und bbb. Wenn es aber in der Tabelle A ein String und sein Substring gibt (wie: cc - ccc), soll den String ccc ausgegeben werden. Außerdem brauche ich von der A die Werte, die auch in der Tabelle B sind (den Substring dd und den String eee).


    Mit meinem select bekomme ich die Werte: aa, bbb, ccc. Das ist schon mal richtig. Aber ich bekomme auch die: dd, ddd, ee, eee. und ich weiss nicht, wie ich ddd und ee rausfiltern soll. Ich habe die max(), min() benutzt, wegen Strings und Substrings. Kann ich die Ausgabe anders lösen?
    Code:
    select case when MIN (A.id) <> MAX (A.id) then MAX (A,id)
    else MIN (A.id)
    end id_neu
    , NVL(B.id, -1) 
    FROM A
    , left outer join
    on A.id = B.id 
    group by NVL(B.id, -1) 
     
    Grüße,
    Kathi
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Parse Eroor.

    Ist das ein reales Problem oder was vereinfachtes?

    Deine Substring-Problematik kannst vielleicht so lösen:

    Code:
    test=*# select t from (select a.*, case when t = substring(lag(a.t) over (order by a.t desc),1,length(a.t)) then 0 else 1 end cfrom kathi_a a order by a.t ) x where c = 1;
      t
    -----
     aa
     bbb
     ccc
     ddd
     eee
    (5 rows)
    
    
    Wobei sich mir hier insgesamt die Frage stellt: Ist das Kunst oder kann das weg?
     
  5. Kathi14

    Kathi14 Benutzer

    Es ist reales Problem...
    und ich bin noch relativ neu im sql-Welt.

    Die Lösung hätte perfekt geklappt, vielen Dank, aber es gibt da einen Hacken, ich brauche in einem Fall den Substring nämlich statt ddd - dd (wegen der Abhängigkeit von der Tabelle B).
    Also:
    aa
    bbb
    ccc
    dd
    eee
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Weil du es bist ;-)

    Code:
    test=*# select case when foo.t ~ b.t then b.t else foo.t end from (select t from (select a.*, case when t = substring(lag(a.t) over (order by a.t desc),1,length(a.t)) then 0 else 1 end c from kathi_a a order by a.t ) x where c = 1) foo left join kathi_b bon foo.t ~ b.t;
      t
    -----
     aa
     bbb
     ccc
     dd
     eee
    (5 rows)
    
     
  7. Kathi14

    Kathi14 Benutzer

    wow super!!!
    Tausend Dank :)
    jetzt versuche ich alles nachzuvollziehen!

    ;)

    Grüße,
    Kathi
     
  8. akretschmer

    akretschmer Datenbank-Guru


    Ich verwende PostgreSQL, Oraggle sollte da relaiv ähnlich sein.

    Das, was Du zeigst läßt mich aber vermuten, daß da ziemlicher Murks gemacht wird, von Dir.
     
  9. Kathi14

    Kathi14 Benutzer

  10. akretschmer

    akretschmer Datenbank-Guru

    • Tabellen mit nur einer Spalte
    • Abhängigkeiten der Zeilen untereinander
    • Substring-Abhängigkeiten

    das ist alles gruselig. Zumindest für mich.
     
  11. Kathi14

    Kathi14 Benutzer

    ja, das ist schon gruselig, aber nicht mehr lange. :)
     
    akretschmer 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