Rezerwacja na 3.noce, 3.osoby, dodane śniadania dla każdej osoby. Gra.
Zakładka posiłki pokazuje: rodzaj posiłku => śniadanie, wielkość=> pełny; ilość=>6
Wynik jest pobierany z widoku. Wyłączenie parametru SQLCanUseViews nic nie daje. Zmianę obserwujemy po usunięciu widoku z bazy - wtedy jako ilość podawana jest ilość na dzień.
Aby wyliczenie było poprawne, trzeba podmienić widok w bazie:
Kod: Zaznacz cały
CREATE VIEW USLUGA_POSILEK_VIEW
(
USLUGA_ID,
ASORT_ID,
MELDUNEK_ID,
REZERWACJA_ID,
GRUPA_ID,
USLUGA_DATA_DO,
USLUGA_DATA_OD,
USLUGA_ILOSC,
ILE_RAZY,
USLUGA_KWOTA_BRUTTO,
USLUGA_KWOTA_BRUTTO_EUR,
ASORT_USLUGA_TYP,
PODTYP
)
AS
SELECT
U.USLUGA_ID,
U.ASORT_ID,
U.MELDUNEK_ID,
U.REZERWACJA_ID,
U.GRUPA_ID,
U.USLUGA_DATA_DO, U.USLUGA_DATA_OD,
U.USLUGA_ILOSC,
U.USLUGA_ILOSC *(U.USLUGA_DATA_DO-U.USLUGA_DATA_OD +1) AS ILE_RAZY,
U.USLUGA_KWOTA_BRUTTO,
U.USLUGA_KWOTA_BRUTTO_EUR,
A.ASORT_USLUGA_TYP,
A.ASORT_USLUGA_TYP
FROM USLUGA U
LEFT OUTER JOIN ASORT A ON A.ASORT_ID = U.ASORt_ID
WHERE A.ASORT_TYP = 4;
1. wyliczenie pola ILE_RAZY - różnica dat+1
2. sugerowana zmiana warunku (oryginalnie jest U.ASORT_TYP=4); dzięki temu zmiana definicji asortymentu wpłynie na wynik wyliczenia. Stosuję w raportach żywień, pomaga gdy użytkownicy sami dodają asortyment ("utworzyłem obiad, dodałem do usług a raport nie widzi").