AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Harte SQL-Nuss - Abfrage formulieren
Thema durchsuchen
Ansicht
Themen-Optionen

Harte SQL-Nuss - Abfrage formulieren

Ein Thema von Tonic1024 · begonnen am 10. Nov 2003 · letzter Beitrag vom 14. Nov 2003
 
Robert_G
(Gast)

n/a Beiträge
 
#18

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 13. Nov 2003, 13:59
Falls du für den Zeitraum jedes Ereignisses alle anderen zum gleichem Zeitraum haben willst.
Kannst du das hier versuchen.
Ich verwende eine Oracle DB - es kann deshalb sein, dass einige Sachen bei dir nicht funktionieren.

SQL-Code:
SELECT ev_a.device,
       ev_a.ev_descr Description,
       ev_a.ev_info info,
       decode(ev_a.ev_action, 'NULL', 'keine Aktion', ev_a.ev_action) action,
       ev_a.ev_date event_date,
       ev_a.ev_st_tm start_time,
       ev_a.ev_en_tm end_time,
       ev_b.device "conc. Device",
       rpad(ev_b.ev_descr, 20, ' ') || ': ' || rpad(ev_b.ev_info, 25, ' ') ||
       ' - ' || decode(ev_b.ev_action, 'NULL', 'keine Aktion', ev_b.ev_action) "conc. Event",
       ev_b.ev_st_tm || ' - ' || ev_b.ev_en_tm "Time"
FROM (SELECT t.device,
               t.ev_descr,
               t.ev_info,
               t.ev_action,
               t.ev_date,
               t.ev_st_tm,
               t.ev_en_tm,
               to_date(to_char(t.ev_date, 'dd.mm.yyy') || ' ' || t.ev_st_tm,
                       'dd.mm.yyyy hh24:mi') st_dttm,
               to_date(to_char(t.ev_date, 'dd.mm.yyy') || ' ' || t.ev_en_tm,
                       'dd.mm.yyyy hh24:mi') en_dttm,
               ROWID
        FROM [TABELLE] t) ev_a,
       (SELECT t.device,
               t.ev_descr,
               t.ev_info,
               t.ev_action,
               t.ev_date,
               t.ev_st_tm,
               t.ev_en_tm,
               to_date(to_char(t.ev_date, 'dd.mm.yyy') || ' ' || t.ev_st_tm,
                       'dd.mm.yyyy hh24:mi') st_dttm,
               to_date(to_char(t.ev_date, 'dd.mm.yyy') || ' ' || t.ev_en_tm,
                       'dd.mm.yyyy hh24:mi') en_dttm,
               ROWID
        FROM [TABELLE] t) ev_b
WHERE (EV_B.st_dttm BETWEEN ev_a.st_dttm AND ev_a.en_dttm OR
       EV_B.en_dttm BETWEEN ev_a.st_dttm AND ev_a.en_dttm) AND
       ev_a.ROWID != ev_b.ROWID
ORDER BY ev_a.device,
          ev_a.st_dttm,
          ev_a.ev_action,
          ev_b.st_dttm


Ich nahm die Werte die du gepostet hast und habe diese Spalten erstellt:
device varchar2(20)
ev_date date
ev_st_tm varchar2(5)
ev_en_tm varchar2(5)
ev_descr varchar2(100)
ev_info varchar2(100)
ev_action varchar2(100)



Damit erhältst du halt eine Übersicht.

Aber ich glaube ich habe dein Problem nicht ganz verstanden.

Außer es geht um debugging der DB (du schriebst Systemausfall, Virusbefall)


Robert
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz