Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Lücken finden?

18 views
Skip to first unread message

Stefan Gläßer

unread,
Feb 6, 2013, 8:19:10 AM2/6/13
to
Hallo,

ich möchte aus unten stehender Tabelle die Id's ermitteln, die keine belegungsId hinterlegt haben sowie die maximale Anzahl der zusammenhängenden Tage (belegungId = 0). Die gewünschte Ausgabe könnte so lauten:

id = 1, 2013-08-03, 7 Tage
id = 1, 2013-08-24, 7 Tage
id = 2, 2013-08-07, 10 Tage
id = 2, 2013-08-24, 7 Tage

Idealerweise sollte man möglichst auch nach zusammenhängenden freien
Tagen suchen können.

Hat jemand ne Idee, wie ich das aus der folgenden Tabelle mit einem SQL-Befehl herausbekommen kann? Falls das Datenbankmodell für die gewünschten Abfragen Schrott ist, ich kann es gerne noch anpassen. Bin für jeden Vorschlag offen.

id datum belegungId
--------------------------------
1 2013-08-03 0
1 2013-08-04 0
1 2013-08-05 0
1 2013-08-06 0
1 2013-08-07 0
1 2013-08-08 0
1 2013-08-09 0
1 2013-08-10 112
1 2013-08-11 112
1 2013-08-12 112
1 2013-08-13 112
1 2013-08-14 112
1 2013-08-15 112
1 2013-08-16 112
1 2013-08-17 112
1 2013-08-18 112
1 2013-08-19 112
1 2013-08-20 112
1 2013-08-21 112
1 2013-08-22 112
1 2013-08-23 112
1 2013-08-24 0
1 2013-08-25 0
1 2013-08-26 0
1 2013-08-27 0
1 2013-08-28 0
1 2013-08-29 0
1 2013-08-30 0
1 2013-08-31 0
2 2013-08-03 78
2 2013-08-04 78
2 2013-08-05 78
2 2013-08-06 78
2 2013-08-07 0
2 2013-08-08 0
2 2013-08-09 0
2 2013-08-10 0
2 2013-08-11 0
2 2013-08-12 0
2 2013-08-13 0
2 2013-08-14 0
2 2013-08-15 0
2 2013-08-16 0
2 2013-08-17 39
2 2013-08-18 39
2 2013-08-19 39
2 2013-08-20 39
2 2013-08-21 39
2 2013-08-22 39
2 2013-08-23 39
2 2013-08-24 0
2 2013-08-25 0
2 2013-08-26 0
2 2013-08-27 0
2 2013-08-28 0
2 2013-08-29 0
2 2013-08-30 0
2 2013-08-31 0


Gruß,
Stefan

Sergej Knjazkow

unread,
Feb 7, 2013, 9:31:13 AM2/7/13
to
Hallo Stefan,

anbei ist ein Beispiel wie Du die Lᅵcken markierst:

CREATE VIEW `testdb`.`testview` AS
SELECT t1.*, t2.datum AS folgedatum
FROM `testdb`.`testtable` AS t1
LEFT JOIN `testdb`.`testtable` AS t2
ON t1.id = t2.id AND t1.belegungId = t2.belegungId
AND DATE_ADD(t1.datum, INTERVAL 1 DAY) = t2.datum
;

Die Objektnamen mit "test***" gg. Deine echten Namen ersetzen.
Jetzt kannst Du auf die View eine GROUP BY Klausel drᅵber legen bzw.
wieder mit sich JOINen...

MFG

Sergej

0 new messages