Rantai Tabel Terkait
Sekarang anggap pengguna tinggal di kota-kota tertentu, dan kota-kota ini terletak di berbagai negara. Dalam kasus seperti ini, untuk penyimpanan kita akan membutuhkan tiga tabel: pengguna akan dikaitkan dengan kota, dan kota akan dikaitkan dengan negara. Dalam hal ini kita tidak perlu kolom yang menghubungkan pengguna dengan negara - karena pengguna akan tetap terhubung dengan negara melalui hubungan antara kota dan negara.
Mari kita lihat tabel-tabel kita. Tabel negara:
| id | name |
|---|---|
| 1 | country1 |
| 2 | country2 |
Tabel kota:
| id | name | country_id |
|---|---|---|
| 1 | city1 | 1 |
| 2 | city2 | 1 |
| 3 | city3 | 2 |
Tabel pengguna akan tetap tidak berubah:
| id | name | city_id |
|---|---|---|
| 1 | user1 | 1 |
| 2 | user2 | 1 |
| 3 | user3 | 2 |
| 4 | user4 | 1 |
| 5 | user5 | 3 |
| 6 | user6 | 2 |
Query
Untuk mengambil pengguna beserta kota dan negara mereka, kita harus melakukan dua join: yang pertama akan menggabungkan kota ke pengguna, dan yang kedua - negara ke kota:
SELECT
users.name,
cities.name as city_name,
countries.name as country_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
LEFT JOIN countries ON countries.id=cities.country_id
Tugas Praktis
Anggap produk milik subkategori tertentu, dan subkategori milik kategori tertentu. Jelaskan struktur penyimpanannya.
Tulis query yang akan mengambil produk, bersama dengan subkategori dan kategori mereka.
Tulis query yang akan mengambil subkategori bersama dengan kategori mereka.