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:
SELECT 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:
SELECT *
Untuk data dipilih dari semua
jadual, perlu untuk 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 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:
SELECT 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:
ON cities.id=users.city_id
Permintaan
Hasilnya, permintaan yang akan mengambil pengguna bersama 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 dengan kategori mereka.