Mengambil Data dari Tabel Terkait di Python
Mari buat kueri yang akan mengambil
semua pengguna beserta kota mereka. Untuk ini
dibutuhkan perintah LEFT
JOIN:
Sintaksnya terlihat seperti berikut:
SELECT fields FROM table_name
LEFT JOIN related_table_name ON link_condition
WHERE selection_condition
Mari kita bahas bagian-bagian sintaks perintah ini secara terpisah.
Fields (Kolom)
Karena seleksi dilakukan dari beberapa tabel,
memilih semua kolom melalui * tidak
akan bekerja. Kueri berikut hanya akan memilih
kolom dari tabel utama, tetapi tidak dari
tabel terkait:
SELECT *
Agar data dipilih dari semua
tabel, perlu untuk menentukan nama
tabel sebelum *:
SELECT users.*, cities.*
Atau, kita bisa mendaftarkan kolom yang kita butuhkan dengan menentukan nama tabel sebelumnya:
SELECT users.name, cities.name
Kedua cara ini memiliki masalah. Masalahnya adalah bahwa jika kolom dalam tabel memiliki nama yang sama, maka dalam array Python akan terjadi konflik nama dan hanya satu kolom yang akan menang, dan yang kedua tidak akan ada.
Untuk mengatasi masalah ini, nama yang bermasalah
perlu diubah menggunakan perintah
as:
SELECT users.name, cities.name as city_name
Link (Hubungan)
Setelah perintah ON kita harus menentukan
kolom dari dua tabel, yang menjadi dasar
hubungan. Dalam kasus kita, ini akan menjadi kolom id
dari tabel kota dan kolom city_id
dari tabel pengguna:
ON cities.id=users.city_id
Query (Kueri)
Hasilnya, kueri yang akan mengambil pengguna bersama dengan kota mereka akan terlihat seperti berikut:
SELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
Tugas Praktis
Misalkan Anda memiliki tabel dengan produk dan tabel dengan kategorinya. Tulis kueri yang akan mengambil nama produk bersama dengan kategorinya.