Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Potęga pytań - JOIN i GROUP BY

Dane bez pytań to martwe zwoje. Prawdziwa moc Biblioteki budzi się dopiero, gdy łączymy regały i liczymy wzorce. Przypomnijmy dwa filary tej sztuki.

JOIN - łączenie regałów

JOIN
zestawia wiersze z dwóch tabel po wspólnej kolumnie. Najczęściej łączymy tabelę po jej kluczu obcym. Warunek dopasowania zapisujemy po słowie
ON
:

1SELECT c.imie, w.data_wypozyczenia
2FROM czytelnicy c
3JOIN wypozyczenia w ON c.id = w.czytelnik_id;
  • INNER JOIN (domyślny
    JOIN
    ) - zwraca tylko sparowane wiersze.
  • LEFT JOIN - zachowuje WSZYSTKIE wiersze z lewej tabeli, nawet jeśli nie mają pary po prawej (puste pola wypełnia
    NULL
    ).

GROUP BY - liczenie w grupach

GROUP BY
skleja wiersze o tej samej wartości w jedną grupę, a funkcje agregujące liczą coś dla każdej grupy:

1SELECT czytelnik_id, COUNT(*) AS liczba
2FROM wypozyczenia
3GROUP BY czytelnik_id;

To zapytanie odpowiada: "Ile razy każdy czytelnik coś wypożyczył?". Najczęstsze funkcje to

COUNT()
,
SUM()
,
AVG()
,
MIN()
,
MAX()
.

JOIN + GROUP BY razem

Połączone dają raporty - serce każdej biblioteki:

1SELECT c.imie, COUNT(*) AS liczba
2FROM czytelnicy c
3JOIN wypozyczenia w ON c.id = w.czytelnik_id
4GROUP BY c.id;

Najpierw łączymy regały, potem grupujemy i liczymy. Tak powstaje wiedza z surowych danych!

Przejdź do CodeWorlds