Joins ohne Select, aber in Where

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:

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')
 
Werbung:
Zurück
Oben