![]() |
Datenbank: mySql • Version: 5.6 • Zugriff über: SQL
SQL: Liste mit Zeiträumen
Moin!
Ich habe eine Tabelle mit Buchungen an bestimmten Tagen und Personen, denen die Buchungen zugeordnet sind. Personen:
Buchungen:
In der Liste können "Löcher" im Datum sein. Mein Ziel ist es, eine Abfrage zu haben, in der ich eine Liste der Zeiträume zu den Personen bekomme. Also das Ergebnis sähe aus:
Hat jemand eine clevere Idee, wie ich eine solche Abfrage formulieren könnte? Mir fällt so gar kein Ansatz ein. |
AW: SQL: Liste mit Zeiträumen
Schon mal mit einer DB-Prozedur versucht?
|
AW: SQL: Liste mit Zeiträumen
Zitat:
Rank Over Partition by Name oder sowas Glaub mySQL kann das aber nicht. Aber wie so oft, gibt es für solche "Lücken" oft komplexere Alternativen (schwerer lesbar und idR langsamer als echte Window Funktionen) Also frag mal das Netz nach "Rank Over Partition by Alternative mysql". Vielleicht findest Du da schon passende Beispiele mit mySQL "Übersetzung" |
AW: SQL: Liste mit Zeiträumen
Nur mal laut gedacht:
SQL-Code:
Select Basis.*,
( Select Min(B2.Datum) From Buchungen B2 Where B2.PersonID=Basis.PersonID AND B2.Datum>=Basis.Datum AND B2.Datum+1 not in (Select Datum From Buchungen Where PersonID=B2.PersonID) ) as Endedatum From ( Select B.PersonID, P.Name, B.Datum as Startdatum From Buchungen B Left Join Personen P On P.ID=B.PersonID Where B.Datum-1 not in (Select Datum From Buchungen Where PersonID=B.PersonID ) Basis Order By 1,2 |
AW: SQL: Liste mit Zeiträumen
Zitat:
SQL-Code:
mit
Basis.Datum
SQL-Code:
ersetzt, dann funzt das in der Tat. :D
Basis.Startdatum
|
AW: SQL: Liste mit Zeiträumen
Ich überlege gerade nochmal, ob man den Subselect fürs Endedatum nicht in die untere Abfrage mit aufnehmen kann, und sich so die äußere Abfrage sparen kann. Aber irgendein Denk(fehler?)/ansatz hatte mich da abgehalten.
|
AW: SQL: Liste mit Zeiträumen
So wie Jumpy es geschrieben hat, hab ich es nun gelöst.
Zum Glück kann ich die Buchungen vorher schon stark einschränken, so dass die Abfrage schnell genug läuft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 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