322 PHP i MySQL dla każdego
322 PHP i MySQL dla każdego
mysql> SELECT Imię, Nazwisko, Nazwa AS 'Nazwa towaru', Wartość AS 'Wartość', ‘ -> Data AS 'Data zamówienia'
-> FROM Zamówienia, Klienci, Towary
-> WHERE Zamówienia.Klientld = Klienci.Id AND Zamówienia.TowarId=Towary.Id;
Rysunek 11.16.
Wynik złączenia trzech tabel: Klienci, Towary i Zamówienia
Dane możemy teraz zgrupować w taki sposób, aby dowiedzieć się, jaka była średnia wartość zamówień dla każdego klienta. Wystarczy jeśli dokonamy złączenia tabel Zamówienia i Klienci oraz wykorzystamy funkcję AVG i klauzulę GROUP BY. Nie możemy oczywiście zapomnieć o prawidłowym warunku złączenia. Całe zapytanie będzie miało zatem postać:
SELECT Imię. Nazwisko. AVG(Wartosc) AS AVG FROM Zamówienia. Klienci WHERE Zamówienia.Klientld - Klienci.Id GROUP BY Klienci.Id
Efekt jego działania jest widoczny na rysunku 11.17.
mysql> SELECT Imię, Nazwisko, AVG(wartosc) AS AVG -> FROM Zamówienia, Klienci -> WHERE Zamówieni a.Klientld = Klienci.Id -> GROUP BY Klienci.Id;
| Imię |
Nazwisko |
AVG |
Andrzej Krzysztof |
Kowalski Nowak Malinowski Kowalski Nowicki |
12.846667 15.660000 15.460000 15.260000 6.110000 |
rows in se |
CO.00 sec) |
Rysunek 11.17.
Grupowanie danych w celu uzyskania średniej wartości zamówienia dla klienta
Podobnie możemy dowiedzieć się, jaka była średnia, minimalna, maksymalna i sumaryczna wartość zamówień dla poszczególnych towarów. Tu również będziemy musieli dokonać złączenia tabel, tym razem Zamówienia i Towary. Niezbędnych informacji dostarczą nam natomiast odpowiednio użyte funkcje AVG, MIN, MAX i SUM:
SELECT Nazwa. AVG(Wartosc) AS 'Średnia'. MIN(Wartosc) AS 'Minimalna'.
MAX(Wartosc) AS 'Maksymalna'. SUM(Wartosc) AS 'Suma'
FROM Zamówienia. Towary
WHERE Zamówienia.Towarld = Towary.Id
GROUP BY Towary.Id:
Efekt działania powyższego zapytania przedstawia rysunek 11.18.