Lekcja 7 / relacje
Relacje i JOIN: połącz użytkownika z zamówieniem
W prawdziwym systemie dane są podzielone na tabele. Nauczysz się połączyć użytkownika z zamówieniem, żeby zobaczyć pełniejszy obraz zgłoszenia.
Sytuacja z pracy
Klient pisze: „Zapłaciłem, ale nie widzę zamówienia”. Samo konto użytkownika nie wystarczy. Samo zamówienie też nie wystarczy. Chcesz zobaczyć zamówienie razem z e-mailem użytkownika.
Dwie tabele
users
| id | |
|---|---|
| 1 | anna@example.com |
| 2 | bartek@example.com |
orders
| id | user_id | amount | status |
|---|---|---|---|
| 101 | 1 | 199 | paid |
| 102 | 2 | 99 | pending |
Nowe pojęcia
users.id identyfikuje użytkownika. orders.user_id wskazuje, do którego użytkownika
należy zamówienie. To jest relacja. JOIN pozwala zestawić pasujące rekordy z dwóch tabel.
ON orders.user_id = users.id mówi bazie, po czym ma połączyć rekordy.
Zapytanie SQL
SELECT
orders.id AS order_id,
users.email,
orders.amount,
orders.status
FROM orders
JOIN users ON orders.user_id = users.id;
Wynik
| order_id | amount | status | |
|---|---|---|---|
| 101 | anna@example.com | 199 | paid |
| 102 | bartek@example.com | 99 | pending |
Co to znaczy dla QA?
Możesz teraz mówić o zamówieniu i użytkowniku w jednym wyniku. To zmniejsza liczbę przełączeń między ekranami i pozwala szybciej przygotować sensowną notatkę: który użytkownik, które zamówienie, jaki status.
Mini-zadanie
Połącz orders z users i pokaż order_id, email oraz status.
Ćwiczenie praktyczne
Dopisz do zapytania kwotę zamówienia. Potem odpowiedz: które kolumny pochodzą z tabeli orders,
a która z tabeli users?
Quiz
Co robi JOIN?
Łączy pasujące rekordy z dwóch tabel.
Po co jest ON?
Określa warunek połączenia, np. orders.user_id = users.id.
Co oznacza AS order_id?
Nadaje kolumnie czytelną nazwę w wyniku.
Co dalej?
Zwykły JOIN pokazuje tylko rekordy, które mają dopasowanie po obu stronach.
A co z rekordami, które dopasowania nie mają? To będzie temat następnej lekcji.