Witam!
Jesli:
-
w tabeli historia sa daty wynajecia pokoju
-
tabela pokoje potrzebna jest nam tylko do cen
to mysle ze moze pojsc cos takiego:
select sum( (JULIAN_DAY(historia.do) - JULIAN_DAY(historia.od) ) *pokoj.cena ) FROM
historia join pokoje using(pokoj)
where historia.nazwisko=‘Kowalski’
nie pracowalem w db2 , ale wg dokumentacji JULIAN_DAY podaje ilosc dni od poczatku kal. julianskiego .
Jak odejmiesz jedno od drugiego, dostaniesz ilosc dni jakie gosc spedzil.
czyli,
etap 1:
select od,do,(JULIAN_DAY(do) - JULIAN_DAY(od) ) from historia;
Sprawdz,czy dobrze policzyl czas pobytu - nie mam db2 wiec nie przetestuje na szybko.
jesli jest ok,to
etap 2 - wyciagamy tylko dane kowalskiego:
select od,do,(JULIAN_DAY(do) - JULIAN_DAY(od) ) from historia WHERE nazwisko=‘Kowalski’;
etap 3 - podpinamy ceny pokoi:
select historia.od,historia.do,(JULIAN_DAY(historia.do) - JULIAN_DAY(historia.od) ) ,pokoje.cena
from historia join pokoje using(pokoj)
WHERE nazwisko=‘Kowalski’;
etap 4. obliczamy kwoty za kazdy pobyt
select historia.od,historia.do,(JULIAN_DAY(historia.do) - JULIAN_DAY(historia.od) ) * pokoje.cena ,pokoje.cena
from historia join pokoje using(pokoj)
WHERE nazwisko=‘Kowalski’;
etap 5: ladnie sumujemy (trzeba wykopac dwie pierwsze kolumny+ostatnia):
select sum(JULIAN_DAY(historia.do) - JULIAN_DAY(historia.od) ) * pokoje.cena )
from historia join pokoje using(pokoj)
WHERE nazwisko=‘Kowalski’;
Jesli nie zrobilem literowki i sql w db2 ma taka sama skladnie jak w postgresql czy mysql (a pewnie tak), to
powinno pojsc.
pozdrawiam serdecznie,
Kacper Chrapa