Hallo,
also Problem ist folgendes:
Wir haben eine SQL-Datenbank "Hotel" mit folgenden Tabellen und Feldern:
1. Buchung:
- Buchungsnr (Primärschlüssel, auto-inc)
- Zimmernummer
- belegtVon
- belegtBis
2. Zimmer:
- Zimmernummer (Primärschlüssel)
- Kategorie
So, nun zum eigentlichen Problem:
Ich brauche eine SELECT-Abfrage, die mir die freien Zimmer ab heute bis zum 31.12.2011 zurück gibt und mir dabei auch den Zeitraum nennt an dem das Zimmer frei sein wird. Arbeiten tue ich mit dem "Microsoft SQL Server Management".
Als Lösung habe ich bereits folgendes realisiert:
Das Problem bei meiner Abfrage ist, das ich davon ausgehe, das die Buchungsnummer je Zimmer vergeben wird. (immer +1). In der Datenbank werden die Buchungsnr. aber zufällig verteilt.
Kann mir dabei jemand aus der Community vielleicht helfen? Komme da leider nicht weiter.
Danke schonmal im Voraus!
also Problem ist folgendes:
Wir haben eine SQL-Datenbank "Hotel" mit folgenden Tabellen und Feldern:
1. Buchung:
- Buchungsnr (Primärschlüssel, auto-inc)
- Zimmernummer
- belegtVon
- belegtBis
2. Zimmer:
- Zimmernummer (Primärschlüssel)
- Kategorie
So, nun zum eigentlichen Problem:
Ich brauche eine SELECT-Abfrage, die mir die freien Zimmer ab heute bis zum 31.12.2011 zurück gibt und mir dabei auch den Zeitraum nennt an dem das Zimmer frei sein wird. Arbeiten tue ich mit dem "Microsoft SQL Server Management".
Als Lösung habe ich bereits folgendes realisiert:
Code:
select *,
FREIVON_DAVOR = isnull((select convert(varchar,dateadd(D,1,BELEGTBIS),104) from BUCHUNG bu where bu.ZIMMERNUMMER=subsel1.ZIMMERNUMMER and convert(numeric,bu.BUCHUNGNR) = convert(numeric,subsel1.BUCHUNGNR) - 1),'01.01.2011'),
FREIBIS_DAVOR = convert(varchar,dateadd(D,-1,subsel1.belegtvon),104),
FREIVON_DANACH = convert(varchar,dateadd(D,1,subsel1.belegtbis),104),
FREIBIS_DANACH = isnull((select convert(varchar,BELEGTVON,104) from BUCHUNG bu where bu.ZIMMERNUMMER=subsel1.ZIMMERNUMMER and convert(numeric,bu.BUCHUNGNR) = convert(numeric,subsel1.BUCHUNGNR) + 1),'31.01.2011')
from (
select z.ZIMMERNUMMER,z.KATEGORIE,b.BUCHUNGNR,b.BELEGTVON,b.BELEGTBIS
from ZIMMER z
left join BUCHUNG b on b.ZIMMERNUMMER=z.ZIMMERNUMMER
) subsel1
Das Problem bei meiner Abfrage ist, das ich davon ausgehe, das die Buchungsnummer je Zimmer vergeben wird. (immer +1). In der Datenbank werden die Buchungsnr. aber zufällig verteilt.
Kann mir dabei jemand aus der Community vielleicht helfen? Komme da leider nicht weiter.
Danke schonmal im Voraus!