Szukaj na tym blogu

wtorek, 20 grudnia 2022

Zadanie 5.5. (0–2)

Załóżmy, że do opisanych wcześniej tabel bazy danych: klienci, pokoje, noclegi dodano jeszcze jedną – uslugi_dodatkowe, w której zapisano usługi zamówione przez gości hotelu.

Tabela uslugi_dodatkowe składa się z pól:
data_wykonania (data, kiedy usługa została wykonana),
id_pobytu (identyfikator pobytu gościa, który zamówił usługę),
rodzaj (rodzaj usługi: śniadanie, obiad, kolacja, basen, masaż, fryzjer),
cena_uslugi (cena, którą gość zapłacił za usługę).

Napisz zapytanie SQL, którego wynikiem będzie zestawienie zawierające dane gości (imię i nazwisko) korzystających z usług dodatkowych oraz łączne kwoty, jakie zapłacili za usługi dodatkowe.

Przykładowe poprawne rozwiązania

CKE

SELECT Klienci.imie, Klienci.nazwisko, Sum(uslugi_dodatkowe.cena_uslugi)
FROM uslugi_dodatkowe INNER JOIN (Klienci INNER JOIN Noclegi ON Klienci.nr_dowodu
= Noclegi.nr_dowodu) ON uslugi_dodatkowe.id_pobytu = Noclegi.id_pobytu
GROUP BY Klienci.nr_dowodu, Klienci.imie, Klienci.nazwisko;

Microsoft Access

SELECT Klienci.imie, Klienci.nazwisko, Sum(uslugi_dodatkowe.cena_uslugi) AS SumaOfcena_uslugi
FROM (Klienci INNER JOIN Noclegi ON Klienci.nr_dowodu = Noclegi.nr_dowodu) INNER JOIN uslugi_dodatkowe ON Noclegi.id_pobytu = uslugi_dodatkowe.id_pobytu
GROUP BY Klienci.imie, Klienci.nazwisko, Klienci.nr_dowodu;

LibreOffice Base

SELECT "Klienci"."imie", "Klienci"."nazwisko", SUM( "uslugi_dodatkowe"."cena_uslugi" ) FROM "Klienci", "Noclegi", "uslugi_dodatkowe" WHERE "Klienci"."nr_dowodu" = "Noclegi"."nr_dowodu" AND "uslugi_dodatkowe"."id_pobytu" = "Noclegi"."id_pobytu" GROUP BY "Klienci"."imie", "Klienci"."nazwisko", "Klienci"."nr_dowodu"

Zasady oceniania

2 pkt – odpowiedź poprawna.
1 pkt – odpowiedź z jednym błędem, np. brak grupowania, błąd przy JOIN itp.
0 pkt – odpowiedź niepoprawna albo brak rozwiązania.