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:

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

sqlSELECT *

Agar data dipilih dari semua tabel, perlu untuk menentukan nama tabel untuk seleksi sebelum *:

sqlSELECT users.*, cities.*

Atau, kita bisa mendaftarkan fields yang kita butuhkan dengan menentukan nama tabel sebelumnya:

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

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

sqlON cities.id=users.city_id

Kueri

Hasilnya, kueri yang akan mengambil pengguna beserta kota mereka akan terlihat seperti berikut:

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

Tugas Praktis

Задание 1

Misalkan Anda memiliki tabel dengan produk dan tabel dengan kategori mereka. Tulis kueri yang akan mengambil nama produk beserta kategorinya.