MySQL: MENYERTAI Jadual dengan Klausa WHERE
Apabila bekerja dengan berbilang jadual dalam pangkalan data MySQL, selalunya perlu melakukan JOIN untuk mendapatkan semula data berkaitan. Walau bagaimanapun, menambah klausa WHERE pada LEFT JOIN boleh memperkenalkan kerumitan.
Masalah:
Anda mahu mendapatkan semula semua kategori daripada jadual kategori, termasuk yang dilanggan oleh pengguna tertentu dalam jadual user_category_subscriptions, menggunakan satu pertanyaan. Walau bagaimanapun, menambah klausa WHERE pada LEFT JOIN awal anda tidak mengembalikan hasil yang diingini.
Pertanyaan Awal:
SELECT * FROM categories LEFT JOIN user_category_subscriptions ON user_category_subscriptions.category_id = categories.category_id
Penyelesaian:
Untuk mendapatkan semula data yang dikehendaki, klausa WHERE hendaklah dimasukkan ke dalam SERTAI syarat dan bukannya klausa WHERE. Ini memastikan bahawa hanya baris yang memenuhi syarat WHERE dimasukkan dalam cantuman:
SELECT * FROM categories LEFT JOIN user_category_subscriptions ON user_category_subscriptions.category_id = categories.category_id AND user_category_subscriptions.user_id = 1 -- Example user ID
Penjelasan:
Dengan meletakkan syarat WHERE dalam klausa JOIN, kami menentukan baris mana dari user_category_subscriptions yang digabungkan pada setiap baris dalam kategori. Ini memastikan bahawa hanya baris untuk pengguna tertentu (user_id = 1 dalam contoh ini) disertakan dalam penyertaan.
Hasilnya ialah senarai semua kategori dalam kategori, dengan nilai NULL dalam lajur user_category_subscriptions untuk kategori tidak dilanggan oleh pengguna yang dinyatakan.
Atas ialah kandungan terperinci Bagaimana Menggunakan Klausa WHERE dengan MySQL LEFT JOIN dengan betul untuk Mendapatkan Semua Kategori dan Langganan Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!