Я написал запрос, используя левое соединение, которое объединяет 3 таблицы для получения данных:
Продукты:
product_id category_id master_category_id manufacturers_id product_name product_img product_des product_price product_status
17421 194 4,6,7,5 2504 prod_name image-1.jpg ---- ---- 1
master_categories:
master_category_id master_category_name original_image picture small thumb icon_img master_category_status
1 Dinnerware/Glassware cat-image1.jpg -- -- -- -- 1
Производители:
manufacturers_id manufacturers_name original_image picture small thumb manufacturers_status
1 CalMil Cal-Mil.png -- -- -- 1
Мой запрос:
select (Case When p.product_status = '0' Then 'Inactive'
When p.product_status = '1' Then 'Active'
Else 'Deleted' End) AS status,
m.manufacturers_name,
GROUP_CONCAT(mc.master_category_name) as master_category_name,
TRIM(p.product_name) as product_name,
p.product_status,p.product_id
from products p
left join manufacturers m
on p.manufacturers_id=m.manufacturers_id
left join master_categories mc
on find_in_set(mc.master_category_id,p.master_category_id)
where p.product_name!=''
GROUP BY p.product_name order by TRIM(p.product_name) ASC LIMIT 0,15
Каждый продукт имеет несколько master_categories, которые хранят свои несколько идентификаторов master_category для столбца «master_category_id» в таблице «products», как показано в таблице «products» выше.
Моя проблема здесь в том, что Мой запрос возвращает master_category_name даже для продукта, у которого нет master_category_id, т. Е. Product показывает master_category_name, даже если у него нет назначенного master_category_id, а также для продукта, который имеет только 2 master_categories, показывающие более 2 категорий .
Может кто-нибудь, пожалуйста, помогите мне Что не так в моем запросе. Спасибо.