【发布时间】:2018-06-28 04:47:29
【问题描述】:
我已经编写了使用左连接的查询,它连接 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 id 存储在 'products' 表中的 'master_category_id' 列中,如上面的 'products' 表所示。
我的问题是我的查询返回一个 master_category_name 即使对于没有任何“master_category_id”的产品,即产品显示一个 master_category_name 即使它没有分配任何 master_category_id 并且产品也有只有 2 个 master_categories 显示超过 2 个类别。
谁能帮我我的查询出了什么问题。谢谢。
【问题讨论】:
-
将
find_in_set(mc.master_category_id,p.master_category_id)更改为find_in_set(mc.master_category_id,p.master_category_id) > 0 -
我试过了,结果还是一样,不行。