Reputation: 89
I have three database tables like this :
movies_tbl(id,name,...)
category_relation_tbl(row,movie_id,category_id,is_delete, ...)
categories_tbl(id,name_fa,is_delete,...)
In this database, is_delete means the record is deleted. I have a query like this to get all movies with categories:
SELECT movies_tbl.* , GROUP_CONCAT(DISTINCT(categories_tbl.name_fa)) as category_names
FROM movies_tbl
LEFT JOIN category_relation_tbl ON category_relation_tbl.movie_id = movies_tbl.id
LEFT JOIN categories_tbl ON categories_tbl.id = category_relation_tbl.category_id
WHERE movies_tbl.is_delete = 0
GROUP BY movies_tbl.id
How should I get all movies with categories even they don't have any categories and also how should I check category_relation_tbl.is_delete = 0? When I check (category_relation_tbl.is_delete) MySQL returns only movies that have related data in category_relation_tbl!!
Upvotes: 2
Views: 97
Reputation: 13506
You can add category_relation_tbl.is_delete = 0
after LEFT JOIN
SELECT movies_tbl.* , GROUP_CONCAT(DISTICT(categories_tbl.name_fa)) as category_names
FROM movies_tbl
LEFT JOIN category_relation_tbl ON category_relation_tbl.movie_id = movies_tbl.id
AND category_relation_tbl.is_delete = 0
LEFT JOIN categories_tbl ON categories_tbl.id = category_relation_tbl.category_id
GROUP BY movies_tbl.id
Upvotes: 4