Kampfgummibaerlie
Datenbank-Guru
- Beiträge
- 743
Also, vielleicht ist soetwas "enorm" einfach, aber ich kam erst jetzt so wirklich dahinter, nachdem ich eine gewisse Pause dazwischen hatte (nicht wirklich ... ^^), also, ich habe folgenden Code verwendet:
Diese gibt, je nachdem ob man einen oder beide Variablen angibt, die Maschine des angegebenen Typs, die jetzt gerade frei ist, oder eben die Maschine des angegebenen Typs zum entsprechenden Zeitpunkt.
Das ganze kann man in dieser Form verwenden:
Code:
create or replace function freie_maschinen_id_zu_zeitpunkt_nach_typ(maschinentyp text, zeitpunkt timestamp default now()::timestamp) returns integer as $$
select maschinen.id from maschinen inner join maschinen_typen on (maschinen.typ = maschinen_typen.id) where lower(maschinen_typen.typ) like lower(maschinentyp) except select
vermietungen.maschinen_id from vermietungen where mietzeit @> zeitpunkt $$ language sql;
Diese gibt, je nachdem ob man einen oder beide Variablen angibt, die Maschine des angegebenen Typs, die jetzt gerade frei ist, oder eben die Maschine des angegebenen Typs zum entsprechenden Zeitpunkt.
Das ganze kann man in dieser Form verwenden:
Code:
select * from freie_maschinen_id_zu_zeitpunkt_nach_typ('Normale')