Mendapatkan Data dari Jadual Berkaitan dalam PHP

Mari buat permintaan yang akan mengambil semua pengguna bersama dengan bandar mereka. Untuk ini kita memerlukan arahan 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 arahan ini.

Medan

Oleh kerana pemilihan dilakukan dari beberapa jadual, memilih semua medan melalui * tidak akan berfungsi. Permintaan berikut akan memilih medan hanya dari jadual utama, tetapi tidak dari jadual berkaitan:

sqlSELECT *

Untuk data dipilih dari semua jadual, perlu untuk 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 cara ini mempunyai masalah. Masalahnya ialah, jika medan dalam jadual mempunyai nama yang sama, maka dalam tatasusunan PHP akan berlaku konflik nama dan hanya satu medan yang akan menang, dan yang kedua tidak akan wujud.

Untuk menyelesaikan masalah ini, nama yang berkonflik perlu dinamakan semula menggunakan arahan as:

sqlSELECT users.name, cities.name as city_name

Perkaitan

Selepas arahan 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 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 dengan kategori mereka.