![]() |
Datenbank: MSSQL • Version: 2012 oder höher • Zugriff über: SQL
SQL - Abfrage nach verschachtelten Kriterien
Ich beiße mir gerade die 3. Zähne an einer Abfrage aus. Gegeben sei folgende Tabellenstruktur:
- Existiert ein Datensatz mit einem NULL-Ende, dann den - Existiert ein Datensatz, der Teil einer Serie ist (Feld Serie ist also nicht NULL), dann soll geprüft werden, ob sich der minimale Anfang in der Vergangenheit und das maximale Ende der gesamten Serie (also aller Datensätze mit demselben Wert im Feld Serie) in der Zukunft befinden, der jetzige Zeitpunkt also innerhalb des Gesamtzeitraums liegt. Bei einem Treffer sollen im Ergebnis dann Minimalanfang und Maximalende samt Status (der Status innerhalb einer Serie ist immer derselbe) zurückgegeben werden. - Existieren mehrere solcher Serien, dann soll die Serie mit dem kleinsten in der Zukunft liegenden Maximalende genommen werden. Ich denke, dass das mit verschachtelten Subqueries zu machen sein müsste, bekomme aber auch nach Stunden nicht das richtige Ergebnis. Entweder ist das wirklich so kompliziert, oder ich habe mich auf einem Irrweg festgerannt und finde da nicht wieder runter. Hat jemand eine Idee, wie man das umsetzen könnte? |
AW: SQL - Abfrage nach verschachtelten Kriterien
Deien Text 1:1 in Code übersetzt. (nur das sas SELECT vorm WHERE steht, was im Text andersrum war :angle2:)
SQL-Code:
Und jetzt mußt du nur noch die beiden SubSelects in je einen LEFT JOIN auslagern
SELECT Serien.*,
(SELECT Min(x.Anfang) FROM Serien AS x WHERE x.Serie = Serien.Serie) AS MinAnfang, (SELECT Max(x.Ende) FROM Serien AS x WHERE x.Serie = Serien.Serie) AS MaxEnde FROM Serien WHERE Ende IS NULL OR (Serie IS NOT NULL AND (SELECT Min(x.Anfang) FROM Serien AS x WHERE x.Serie = Serien.Serie) < NOW AND (SELECT Max(x.Ende) FROM Serien AS x WHERE x.Serie = Serien.Serie) > NOW) ORDER BY MaxAnfang |
AW: SQL - Abfrage nach verschachtelten Kriterien
Zitat:
|
AW: SQL - Abfrage nach verschachtelten Kriterien
Das klingt für mich so als würde Sortieren reichen, und dann jeweils den ersten Datensatz pro userid nehmen?
Einziges Kriterium wäre dann, daß Anfang in der Vergangenheit liegt? Gruß K-H |
AW: SQL - Abfrage nach verschachtelten Kriterien
Danke für die Antworten, der Ansatz mit den OUTER JOINS hat mir gefehlt, ich denke, damit bekomme ich mein Wunschergebnis hin :thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:35 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 by Thomas Breitkreuz