Rozdział 12. ♦ Tworzenie bazy w praktyce 357
SELECT Zamówieni a.Id. 'Tytuł'. 'Ilość'
FROM Książki Zamówienia, Książki. Zamówienia WHERE KsiazkiZamowienia.'Książkald' = Książki.Id AND
KsiazkiZamowienia.'ZamówienieId' = Zamówienia.Id AND Zamówieni a.Status = 0 ORDER BY Zamówieni a.Id;
Efekt jej działania został zaprezentowany na rysunku 12.8.
Rysunek 12.8.
Pobranie szczegółów
niezrealizowanych
zamówień
mysql> SELECT Zamówieni a.Id, 'Tytuł', 'Ilość'
-> FROM KsiazkiZamowienia, Książki, Zamówienia -> WHERE KsiazkiZamowienia.'Książkald' = Książki .Id AND -> KsiazkiZamowienia. 'Zamówi eni el d' = Zamówieni a. Id AND
-> Zamówienia.Status = 0
-> ORDER BY Zamówienia.Id;
Id
Tytuł
Ilość
Lovelock
Uczeń skrytobójcy Uczeń skrytobójcy Wolfs Brother The Windsingers Królewski skrytobójca Lovelock
Uczeń skrytobójcy Uczeń skrytobójcy Dotyk zła
10 rows in set (0.00 sec)
Dowiedzmy się także, jaka jest wartość zamówień dla książek poszczególnych autorów. Przy okazji policzymy, ile egzemplarzy książek danego autora zostało sprzedanych. Jak się domyślamy, ponownie niezbędne będzie odpowiednie grupowanie i złączanie tabel, jak również wykorzystanie funkcji sumującej. Niezbędne dane znajdziemy w tabelach KsiazkiZamowienia, Książki i Autorzy. Całe zapytanie będzie miało postać; SELECT Autorzy.Nazwa AS Autor,
SUM(Książki Zamówienia.'II ość' * Książki Zamówienia.Cena) AS 'Wartość',
SUM(KsiazkiZamowienia."Ilość') AS 'Ilość'
FROM KsiazkiZamowienia. Książki. Autorzy, KsiążkiAutorzy WHERE KsiazkiZamowienia.'Książkald' ■ Książki.Id AND Książki.Id = KsiążkiAutorzy.'Książkald' AND Autorzy.Id - KsiążkiAutorzy.Autorld GROUP BY Autorzy.Id ORDER By Autorzy.Id:
A efekt jego działania został zaprezentowany na rysunku 12.9.
Na zakończenie dowiedzmy się, ile książek i na jakie kwoty zamówili poszczególni klienci. Tym razem informacje znajdziemy w tabelach Klienci, Zamówienia i Książki -Zamówienia. Zastosujemy złączenie i funkcję sumującą, analogicznie do poprzednich przykładów. Zapytanie pobierające szukaną przez nas informację będzie miało postać: SELECT Klienci.Id, Imię. Nazwisko,
SUMtKsiazkiZamowienia.Cena * KsiazkiZamowienia.'Ilość') AS 'Wartość'.
SUM(KsiazkiZamowienia.'Ilość') AS 'Liczba książek'
FROM Klienci. Zamówienia. KsiazkiZamowienia WHERE Klienci.Id - Zamówienia.Klientld AND
Zamówienia.Id ■ KsiazkiZamowienia.'Zamówienield'
GROUP BY Klienci.Id ORDER BY Wartość DESC;