Rantai Tabel Terkait dalam Python
Misalkan sekarang pengguna tinggal di kota tertentu, dan kota-kota ini terletak di berbagai negara. Dalam hal ini, untuk penyimpanan kita membutuhkan tiga tabel: pengguna akan dihubungkan dengan kota, dan kota - dengan negara. Dengan demikian, kita tidak memerlukan bidang hubungan pengguna dengan negara - karena pengguna akan tetap dihubungkan dengan negara melalui hubungan 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 |
Kueri
Untuk mengambil pengguna bersama dengan 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
Misalkan produk milik subkategori tertentu, dan subkategori milik kategori tertentu. Jelaskan struktur penyimpanannya.
Tulis kueri yang akan mengambil produk, bersama dengan subkategori dan kategori mereka.
Tulis kueri yang akan mengambil subkategori bersama dengan kategori mereka.