Announcement

Collapse
No announcement yet.

1:n-Problematik

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 1:n-Problematik

    Hallo,

    ich habe ein kleineres, größeres Problem. Für eine Abfrage musste ich eine Tabelle mit einer anderen verknüpfen, die 1:n in Beziehung stehen. Nun ist es so, dass ich "nur" schauen muss, ob in diesen n Werten ein bestimmter Wert drin steht oder nicht.
    Beispiel:

    Ursprungstabelle I: Ursprungstabelle
    id, fremdID, wert1, wert2, ... id, werte, status, fremdID,datum
    1, bspID, toll, supi, ... 1, wer, AKT, bspID, 2006
    2, wert, AKT, bspID
    3, wert, NICHT_AKT, bspID

    Nach dem Merge sieht das ganze dann so aus:
    1, bspID, toll, supi, ... 1, wer, AKT, bspID, datum
    1, bspID, toll, ... 2, wert, AKT, bspID, datum
    1, bspID, toll, ... 3, wert, NICHT_AKT, bspID, datum

    So, was ich nun will ist: ist einer der Werte AKT, dann schreibe hin:
    1, bspID, toll, supi, AKT, ältestes Datum

    Sind alle Werte Nicht_AKT, dann schreibe hin:
    1, bspID, toll, supi, NICHT_AKT, jüngstes Datum

    Die Datentabellen sind ziemlich groß, die ich erzeugt habe und ich bräuchte einen Hinweis wie ich das möglichst effizient hinbekommen könnte.

    VG
    Christopher

  • #2
    Hallo!

    select a.*, 'AKT' as Status from Tabelle1 a
    where exists (select b.* from Tabelle2 b where b.id = a.id and b.Status = 'AKT' )
    UNION
    select a.*, 'NOT AKT' as Status from Tabelle1 a
    where not exists (select b.* from Tabelle2 b where b.id = a.id and b.Status = 'AKT' )

    So OK?

    BYE BERND

    Comment


    • #3
      Schon mal vielen Dank für die Hilfestellung.

      Ich erhalte jetzt für jeden Datensatz aus der einen Tabelle einen Wert entsprechend der Existenz eines Wertes in der anderen Tabelle. So weit so klar!
      Das Problem das ich jetzt noch habe ist folgendes: wie kann ich jetzt zu diesem Status noch das Max. Datum bzw. das Min. Datum aus der anderen Tabelle herauslesen? Also aus Tabelle 2?

      Comment

      Working...
      X