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:

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

sqlSELECT *

Untuk data dipilih dari semua jadual, anda perlu menentukan nama jadual untuk pemilihan sebelum *:

sqlSELECT users.*, cities.*

Atau anda boleh menyenaraikan medan yang kita perlukan dengan menentukan nama jadual sebelum mereka:

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

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

sqlON cities.id=users.city_id

Permintaan

Hasilnya, permintaan yang akan mengambil pengguna bersama-sama dengan bandar mereka akan kelihatan seperti berikut:

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

Tugas Praktikal

Задание 1

Katakan anda mempunyai jadual dengan produk dan jadual dengan kategori mereka. Tulis permintaan, yang akan mengambil nama produk bersama-sama dengan kategori mereka.