我使用左联接编写了查询,该联接将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,它们在“ products”表中的“ master_category_id”列中存储了多个master_category id,如上面的“ products”表所示。
我的问题是我的查询返回的是甚至没有任何“ master_category_id”的产品的master_category_name,即,即使没有分配任何master_category_id的产品也显示了master_category_name,并且该产品还具有只有2个master_categories显示超过2个类别。
谁能帮助我,我的查询有什么问题。谢谢。
答案 0 :(得分:0)
您需要在product_id列上进行分组。如果多个产品使用相同的名称,则可能是将这些数据分组并给您不正确的结果。 find_in_set也应在> 0的条件下使用。 试试这个。
PVector m3 = null;
PVector m1 = new PVector();
PVector m2 = new PVector(2, 3);