7. Łączenie oraz grupowanie
Czy zastanawiałeś się kiedyś, który z klientów zamawia zawsze najwięcej produktów danego koloru?
Ładną i wygodną do tego celu, który klient zamówił ile produktów jest użycie słowa GROUP BY.
JOIN produkty
ON klienci.klient_id = produkty.klient_id
GROUP BY klienci.klient_id;
Aby zobaczyć klientów którzy nie zamówili jeszcze nic, należy użyć umiłowanego LEFT JOINa:
SELECT klienci.klient_id, klienci.klient_imie, COUNT(produkty.condom_kolor) AS wszystkie_zamowienia FROM klienci
LEFT JOIN produkty
ON klienci.klient_id = produkty.klient_id
GROUP BY klienci.klient_id;
Oba przykłady różni tylko to, że w drugim zapytaniu dodaliśmy słowo LEFT.
Opiszmy więc może pierwszy przykład, dla którego wszukujemy ludzi, którzy złożyli lub też jeszcze nie złożyli jeszcze zamówienia.
Pierwsza linia informuje jakie kolumny będą wyświetlane, dzięki słowu COUNT oraz nazwie kolumny możemy ustalić ilość zamówień dla każdego klienta. Później następuje połączenie dwóch tabel, oraz warunek który powinien być spełniony. Na końcu grupujemy nasze wyniki według numer ID klientów, dzięki temu również nie będziemy mieli powtarzających się wpisów w liście.
Czyli wynik będzie następujący:
klient_id | klient_imie | wszystkie_zamowienia |
1 | Jan | 3 |
2 | Tomek | 0 |
3 | Dawid | 2 |
4 | Adam | 1 |
Dalsza czê¶æ: 1 2 3 4 5 6 7
Ranga: Administrator serwisu Punktów: 0