Ich habe eine Anwendung, die Schulferien behandelt. Leider gibt es drei verschiedene Schulferien: landesweite, landesweite und stadtweite Ferien. Ich speichere alle Daten in einer Tabelle days
, einem Tisch vacation_periods
und eine Verbindungstabelle slots
:LEFT JOIN gehören Daten
days {
id:integer
date_value:date
}
slots {
id:integer
day_id:integer
vacation_period_id:integer
}
vacation_periods {
id:integer
starts_on:date
ends_on:date
name:string
country_id:integer
federal_state_id:integer
city_id:integer
}
ich alle days
innerhalb eines bestimmten Zeitrahmens auswählen möchten. Nehmen wir an, 1. Januar 2017 bis 31. Januar 2017. ich diese days
mit bekommen:
SELECT * FROM days WHERE date_value >= '2017-01-01' AND
date_value <= '2017-01-31';
Aber für meinen Urlaub Kalender brauche ich nicht nur die days
sondern auch die Informationen, die vacation_periods
innerhalb sind. Unter der Annahme, ich für alle vacation_periods
suchen, die in diesem Zeitrahmen sind und die
country_id == 1 or federal_state_id == 5 or city_id == 30
ich gelesen habe über JOINS und LEFT beitritt, das scheint die Lösung für das Problem zu sein. Aber ich kann nicht alles zusammen bekommen.
Ist es möglich, eine SQL-Anfrage zu senden, die all days
innerhalb des gewünschten Zeitrahmen gibt und die zusätzliche Informationen, wenn ein vacation_period
, die die country_id == 1 or federal_state_id == 5 or city_id == 30
Regel paßt über slots
zu jedem day
verbunden. Einschließlich der Name dieser vacation_period
?
Wenn eine Anfrage nicht möglich ist: Welcher ist der schnellste Weg, dies in der Datenbank zu lösen? Wie viele Anfragen? Welche Art von Anfragen?
Wenn möglich, möchte ich ein Ergebnis in einer Art dieser Form zu erhalten:
- date_value: "2017-01-01"
- date_value: "2017-01-02"
- date_value: "2017-01-03"
* vacation_period.id: 15
* vacation_period.name: "foobar"
- date_value: "2017-01-04"
* vacation_period.id: 15
* vacation_period.name: "foobar"
- date_value: "2017-01-05"
* vacation_period.id: 15
* vacation_period.name: "foobar"
- date_value: "2017-01-06"
- date_value: "2017-01-07"
...
Bitte geben Sie ein Beispiel für die Ausgabe, die Sie suchen. – dhiman
Was ist der Zweck von "Slots"? –
@AndrewLazarus Kein Zweck. Ich dachte, es ist die beste Lösung. Ich bin offen für andere Ideen. – wintermeyer