Mendapatkan Data dari Tabel Terkait di PHP
Mari kita buat kueri yang akan mengambil
semua pengguna beserta kota mereka. Untuk ini
kita memerlukan perintah LEFT
JOIN:
Sintaksnya terlihat sebagai berikut:
SELECT 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
Karena seleksi dilakukan dari beberapa tabel,
memilih semua fields melalui * tidak akan
berfungsi. Kueri berikut akan memilih fields hanya
dari tabel utama, tetapi tidak dari tabel terkait:
SELECT *
Agar data dipilih dari semua
tabel, perlu untuk menentukan nama
tabel untuk seleksi sebelum *:
SELECT users.*, cities.*
Atau, kita bisa mendaftarkan fields yang kita butuhkan dengan menentukan nama tabel sebelumnya:
SELECT users.name, cities.name
Kedua cara ini memiliki masalah. Masalahnya adalah, jika fields dalam tabel memiliki nama yang sama, maka dalam array PHP akan terjadi konflik nama dan hanya satu field yang akan menang, dan yang kedua tidak akan ada.
Untuk menyelesaikan masalah ini, nama-nama yang konflik
perlu diubah melalui perintah as:
SELECT users.name, cities.name as city_name
Link
Setelah perintah ON kita harus menentukan
fields dari dua tabel, yang menjadi dasar
hubungan. Dalam kasus kita, ini adalah field id
dari tabel kota dan field city_id
dari tabel pengguna:
ON cities.id=users.city_id
Kueri
Hasilnya, kueri yang akan mengambil pengguna beserta kota mereka akan terlihat seperti berikut:
SELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
Tugas Praktis
Misalkan Anda memiliki tabel dengan produk dan tabel dengan kategori mereka. Tulis kueri yang akan mengambil nama produk beserta kategorinya.