Też wydawało mi się to takie proste, ale przy takim zapisie źle liczy.
Źle liczy bo nie sortuje towaru.
(+ zał.)
Kwerenda sum zakupów:
- Kod: Zaznacz cały Rozszerz widokZwiń widok
SELECT "towar" AS "t_z",
SUM( "ilosc_z" ) AS "ilosc_z_sum"
FROM "zakupy"
GROUP BY "towar"
Kwerenda sum sprzedaży:
- Kod: Zaznacz cały Rozszerz widokZwiń widok
SELECT "towar" AS "t_s",
SUM( "ilosc_s" ) AS "ilosc_s_sum"
FROM "sprzedaz"
GROUP BY "towar"
Stan magazynu:
- Kod: Zaznacz cały Rozszerz widokZwiń widok
SELECT "kw_zakupy_sum"."t_z",
"kw_zakupy_sum"."ilosc_z_sum" AS "il_z_sum",
ifnull( "kw_sprzedaz_sum"."ilosc_s_sum", 0 ) AS "il_s_sum",
"kw_zakupy_sum"."ilosc_z_sum" - ifnull( "kw_sprzedaz_sum"."ilosc_s_sum", 0 ) AS "stan"
FROM "kw_zakupy_sum" LEFT OUTER JOIN "kw_sprzedaz_sum"
ON "kw_zakupy_sum"."t_z" = "kw_sprzedaz_sum"."t_s"
UWAGI TECHNICZNEBaza dopuszcza możliwość sprzedaży towaru, który nie został zakupiony !Towar "atrament" jest w tabeli "towary" i w tabeli "sprzedaz" ale nie ma go w tabeli "zakupy".
Bezpieczniej jest zrobić bazę bez takiego założenia tak, żeby w tabeli "stan magazynu" pokazywały się wartości ujemne.Można to zrobić przez "FULL JOIN" zamiast "LEFT JOIN". Problem w tym, że OOo (v. 3.2.0) nie obsługuje tego polecenia. W przypadku dwóch tabel można je w miarę sensownie zastąpić przez "[LEFT JOIN] UNION [RIGHT JOIN]". Jednak "UNION" trzeba wpisać jako polecenie SQL (nie kwerendę) co wymusza użycie "CREATE VIEW" (również jako polecenie SQL). Dopiero z tak powstałego widoku (niewidocznego w interfejsie bazy do ponownego otwarcia pliku) można utworzyć kwerendę.
PS
Odpowiednikiem polecenia "CREATE VIEW" jest przycisk "Utwórz widok ..." w dziale tabel. Tak utworzony widok jest widoczny od razu (nie trzeba ponownie otwierać pliku). Widok można modyfikować jako polecenie poprzez "Edytuj w widoku SQL ...".