Moin!
Mich hat meine
SQL-Muse verlassen.
Ich habe eine Tabelle mit Personen und dazu eine Buchungstabelle mit einem Timestamp:
Personen:
ID | Nachname | Vorname |
1 | Müller | Max |
2 | Schulze | Fritz |
3 | Mustermann | Erika |
Buchungen:
ID | person_id | zeitpunkt | weitere Daten |
1 | 1 | 18.03.2015 12:03 | .... |
1 | 1 | 18.03.2015 15:12 | .... |
1 | 1 | 20.03.2015 12:03 | .... |
1 | 2 | 17.03.2015 15:00 | .... |
Also eine 1:n Verknüpfung über buchungen.person_id <-> personen.id
Es kann pro Tag für jede Person mehr als eine Buchung geben. Es kann aber auch Tage geben, an denen es keine Buchung für eine Person gibt.
Nun möchte ich für einen gegebenen Zeitraum die
Anzahl der Tage ermitteln, an denen es
KEINE Buchung für die Person gibt.
Also wenn ich als Zeitraum 17.03. bis 21.03. abfragen, wünsche ich mir folgendes Ergebnis:
person_id | nachname | vorname | Anzahl |
1 | Müller | Max | 3 |
2 | Schulze | Fritz | 4 |
3 | Mustermann | Erika | 5 |
Wie könnte man sowas anstellen? Wichtig ist mir auch, dass das möglichst Performant abläuft. Ich werde so ca. 1000 Personendatensätze haben und im Schnitt 4 Buchungsdatensätze pro Person und Tag. Der Abfragezeitraum kann auch mal ein ganzes Jahr sein. Somit also knapp 1500 Datensätze pro Person(!) im Abfragezeitraum.
Vielen Dank!