Rozdział 11. ♦ Więcej o SQL 321
Rozdział 11. ♦ Więcej o SQL 321
Rysunek 11.15.
Efekt działania zapytania grupującego, wykorzystującego różne typy warunków
mysql> SELECT KLientld, Towarld, AVG(Wartosc) AS AVG -> FROM Zamówienia -> WHERE Towarld IN (1, 3, 5)
-> GROUP BT Kiientld -> HAVING SUM(Wartosc) >= 10;
I 4 | 1 | 15.260000 I 3 rows in set (0.00 sec)
i towarów. Być może chcielibyśmy jednak uzyskiwać informacje w bardziej czytelnej postaci, zawierające dodatkowo imiona i nazwiska klientów oraz nazwy towarów. Przygotujmy zatem dwie dodatkowe tabele przechowujące takie informacje. Tabela Klienci o trzech kolumnach: Id, Imię, Nazwisko, będzie zawierała następujące dane:
Klienci
Id | Imię |
| Nazwisko |
1 | Jan |
| Kowalski |
2 | Andrzej |
| Nowak |
3 j Janusz |
j Malinowski |
4 | Adam |
j Kowalski |
5 | Krzysztof | Nowicki |
Druga tabela, o nazwie Towary, będzie miała dwie kolumny, o nazwach: Id i Nazwa, i będzie zawierała dane:
Towary
1 Id | |
Nazwa |
1 1 1 |
Śruby |
2 | |
Nakrętki | |
1 3 | |
Kątowniki | |
4 | |
Płaskowniki \ |
Jeśli chcemy teraz uzyskać szczegółowe informacje o wszystkich zamówieniach, będziemy musieli wykonać złączenie trzech tabel: Zamówienia, Klienci i Towary, odpowiednio formując warunki zapytania. Interesować będą nas dane dotyczące imienia i nazwiska klienta, nazwy towaru oraz wartości i daty złożenia zmówienia. Zapytanie, które pobierze dla nas takie dane, będzie miało postać:
SELECT Imię, Nazwisko. Nazwa AS 'Nazwa towaru'. Wartość AS 'Wartość'.
Data AS 'Data zamówienia'
FROM Zamówienia. Klienci, Towary
WHERE Zamówienia.KIientld - Klienci.Id AND Zamówienia.Towarld-Towary.Id:
Efekt jego działania został przedstawiony na rysunku 11.16.