Rumah >pangkalan data >tutorial mysql >Bagaimana Menggunakan Klausa WHERE dengan MySQL LEFT JOIN dengan betul untuk Mendapatkan Semua Kategori dan Langganan Pengguna?

Bagaimana Menggunakan Klausa WHERE dengan MySQL LEFT JOIN dengan betul untuk Mendapatkan Semua Kategori dan Langganan Pengguna?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-06 14:11:15664semak imbas

How to Correctly Use WHERE Clauses with MySQL LEFT JOINs to Retrieve All Categories and User Subscriptions?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn