Mendapatkan Data dari Jadual Berkaitan dalam Python
Mari buat permintaan yang akan mengambil
semua pengguna bersama-sama dengan bandar mereka. Untuk ini,
perlukan perintah LEFT
JOIN:
Sintaksnya adalah seperti berikut:
SELECT medan FROM nama_jadual
LEFT JOIN nama_jadual_berkaitan ON syarat_perkaitan
WHERE syarat_pemilihan
Mari kita huraikan bahagian individu sintaks perintah ini.
Medan
Oleh kerana pemilihan dilakukan dari beberapa jadual,
memilih semua medan menggunakan * tidak
akan berfungsi. Permintaan berikut akan memilih
medan hanya dari jadual utama, tetapi bukan dari
jadual berkaitan:
SELECT *
Untuk data dipilih dari semua
jadual, anda perlu menentukan nama
jadual untuk pemilihan sebelum *:
SELECT users.*, cities.*
Atau anda boleh menyenaraikan medan yang kita perlukan dengan menentukan nama jadual sebelum mereka:
SELECT users.name, cities.name
Kedua-dua kaedah ini mempunyai masalah. Masalahnya ialah jika medan dalam jadual mempunyai nama yang sama, maka dalam tatasusunan Python konflik nama akan berlaku dan hanya satu medan akan menang, dan yang kedua tidak akan wujud.
Untuk menyelesaikan masalah ini, nama yang
berkonflik perlu dinamakan semula menggunakan perintah
as:
SELECT users.name, cities.name as city_name
Perkaitan
Selepas perintah ON kita mesti menentukan
medan dari dua jadual, yang mana perkaitan
dilakukan. Dalam kes kami, ini akan menjadi medan id
dari jadual bandar dan medan city_id
dari jadual pengguna:
ON cities.id=users.city_id
Permintaan
Hasilnya, permintaan yang akan mengambil pengguna bersama-sama dengan bandar mereka akan kelihatan seperti berikut:
SELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
Tugas Praktikal
Katakan anda mempunyai jadual dengan produk dan jadual dengan kategori mereka. Tulis permintaan, yang akan mengambil nama produk bersama-sama dengan kategori mereka.