Anda harus memasukkannya ke dalam join klausa, bukan where :
SELECT *
FROM categories
LEFT JOIN user_category_subscriptions ON
user_category_subscriptions.category_id = categories.category_id
and user_category_subscriptions.user_id =1
Lihat, dengan inner join , menempatkan klausa di join atau where setara. Namun, dengan outer join , mereka sangat berbeda.
Sebagai join kondisi, Anda menentukan rowset yang akan Anda gabungkan ke tabel. Ini berarti mengevaluasi user_id = 1 pertama, dan mengambil subset dari user_category_subscriptions dengan user_id dari 1 untuk bergabung ke semua baris di categories . Ini akan memberi Anda semua baris di categories , sedangkan hanya categories bahwa pengguna tertentu telah berlangganan akan memiliki informasi apa pun di user_category_subscriptions kolom. Tentu saja, semua categories lainnya akan diisi dengan null di user_category_subscriptions kolom.
Sebaliknya, sebuah where klausa bergabung, dan lalu mengurangi baris. Jadi, ini melakukan semua gabungan dan kemudian menghilangkan semua baris di mana user_id tidak sama dengan 1 . Anda memiliki cara yang tidak efisien untuk mendapatkan inner join .
Semoga membantu!