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:

sqlSELECT 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:

sqlSELECT *

Agar data dipilih dari semua tabel, perlu untuk menentukan nama tabel sebelum *:

sqlSELECT users.*, cities.*

Atau, kita bisa mendaftarkan kolom yang kita butuhkan dengan menentukan nama tabel sebelumnya:

sqlSELECT 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:

sqlSELECT 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:

sqlON cities.id=users.city_id

Query (Kueri)

Hasilnya, kueri yang akan mengambil pengguna bersama dengan kota mereka akan terlihat seperti berikut:

sqlSELECT
  users.name, cities.name as city_name
FROM
  users
LEFT JOIN cities ON cities.id=users.city_id

Tugas Praktis

Задание 1

Misalkan Anda memiliki tabel dengan produk dan tabel dengan kategorinya. Tulis kueri yang akan mengambil nama produk bersama dengan kategorinya.