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
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 11:37
Moin...

Ich habe da eine knobelaufgabe, die meine Kenntnisse Überfordert...

Ich habe einen Haufen Quasi zusammenhangloser Datensätze (Die haben einen Zusammenhang, der hierfür keine Rolle spielt) - eine Art Logfile. Nun markiert ein Datensatzt den Beginn eines Ereignisses (Code = x) und ein Datensatz das Ende eines Ereignisses (Code = y). Haben will ich alle Datensätze, die innerhalb dieses Ereignisses angelegt wurden.

jetzt müsste ja eine Abfrage die in etwas so ausschaut das Problem lösen:
Delphi-Quellcode:
SELECT * FROM TABELLE WHERE beginnzeit BETWEEN
(SELECT beginnzeit AS Beginn FROM DieSelbeTabelle WHERE code = x) AND
(SELECT beginnzeit AS Ende FROM DieSelbeTabelle WHERE code = y);
Oder so ähnlich...

Nun ist es aber ja so, dass BETWEEN zwei Values haben will und nicht zwei tabellen... Ich habe auch schon allerhand mit Inner Join's rumhantiert, aber irgendwie will das nicht

Das Problem ist zusätzlich, dass ich darauf angewiesen bin, dass ich nur eine Anfrage absetze und ebenfalls nur eine Tabell zurückbekomme. Sonst hätt ich Delphi das sortieren lassen nachdem ich alles übertragen hätte...
Das kann ich zwar immernoch, aber es ist A.) nicht besonders elegant und B.) recht viel Datensalat...

Wär echt cool, wenn einer der SQL-Cracks mal einen Tip für mich hätte...

Bis denne...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 11:48
Hallo,

dein Beispiel sollte eigentlich funktionieren.
Welche DB und welche Komponenten verwendest du?
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#3

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 11:52
Hallo Tonic1024,

Dein Select sollte so funktionieren, vorausgesetzt das Ergebnis der beiden SubQueries liefert nur einen Datensatz.
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 12:05
Hm, ja. Ihr habt ja Recht.

Und genau da liegt das Problem. Da der Zeitraum vom User festgelegt werden können muss, kann ich mich da ja nicht drauf verlassen... Können auch 2, 4, 100 sein...

Im Moment - in der TestPhase - benutze ich nur den Borland Datenbank-Explorer um einen Funktionsfähigen String auszuprobieren. Das DBMS ist IB6 via ODBC. Ob ODBC im Programm so bleibt ist aber noch die Frage...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#5

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 12:15
Hallo Tonic1024,

das verstehe ich jetzt nicht. Ein Zeitraum wird doch immer nur von zwei Datümern begrenzt. Wie kann das ein User anders festlegen?
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#6

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 12:21
Äh... die Frage verstehe ich jetzt aber nicht...

Es handelt sich um eine Art Logfile... Das Ereignis kann auch zweimal am Tag auftreten, aber der User kann sich alle ereignisse der ganzen Woche anzeigen lassen... sind also 28 ereignisse. 2 mal start und 2 mal ende pro Tag - rein fiktiv...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von r_kerber
r_kerber

Registriert seit: 11. Feb 2003
Ort: Trittau
3.538 Beiträge
 
Delphi XE Professional
 
#7

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 12:25
Das wären dann aber mehrere Zeiträume, also z.B. einma von 07:30 bis 09:15 und dann noch einmal von 10:25 bis 11:00. Verstehe ich das jetzt richtig?
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#8

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 12:32
Und genau da liegt der hase im Pfeffer

Ich benötige Alle Zeiträumedie zu dem Ereignis gehören wobei mehrere Ereignis-Zeiträume zu einem vom User ausgewählten Zeitraum gehören.

Ich habe also, wie ich in der Frage versucht habe zu formulieren, eine Tabelle mit Start-Ereignissen und eine Tabelle mit Ende-Ereignissen als Resultat der SubQueries. Das geht nicht mit Between. Soweit war ich schon...

Ich versuche gerade das mit Joins zu realisieren, damit ich diese "Makro-Tabelle" dann mit WHERE, AND, OR etc selectieren kann...

Oder geht das etwa garnicht?!?! [zitter]
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 12:36
Hallo Tonic,

falls du mehrere Datensätze bekommst, solltest du das Ergebnis der Unterselect - Statement mit z.B. MAX auf einen Wert beschränken:


SQL-Code:
SELECT * FROM TABELLE WHERE beginnzeit BETWEEN
(SELECT MAX(beginnzeit) AS Beginn FROM DieSelbeTabelle WHERE code = x) AND
(SELECT MAX(beginnzeit) AS Ende FROM DieSelbeTabelle WHERE code = y);
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#10

Re: Harte SQL-Nuss - Abfrage formulieren

  Alt 10. Nov 2003, 12:48
Das Problem ist Umfangreich, ich weiss... hab selbst ne Weile gebraucht bis ich es begriffen hab...

Also, nehmen wir der Einfachheit an es handelt sich um ein Server Log-file mit Ausfall-Meldugen und Störung-behoben-Meldungen (etwas an den Haaren herbeigezogen - ich weiss). Ich müsste dann schon alle Ausfälle sehen inklusive der Datensätze die dazwischen liegen z.B. Aktionen die wegen der Störung nich ausgeführt wurden oder fehlgeschlagene Versuche den Fehler zu beheben.

Ich möchte aus Performance-Gründen nur ungern ALLE angefallenen Datensätze des Ausgewählen Zeitraums übertragen und Delphi schauen lassen ob ein Ausfall drin ist, obwohl das wohl einfacher wäre.
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz