现在统计下数据效果个代码
SELECT
sd.stock_id ,
COUNT(sd.stock_id )
FROM
wx_mini_product p
left JOIN wx_mini_product_stock_detail sd ON sd.product_id = p.id GROUP BY sd.stock_id
需要的效果应该都是13
B表有13条数据 13个产品,
A表有1000条数据 ,
如果A不存在B表数据则把不存在B表的数据也查询出来显示 后面的库存 金额,等字段值为0 ,
简单点就是 A表一条数据对应B表13条如果A表有10条就要查询出10*13的记录130条 没有值的显示为空
比如 b表有产品1 产品2 a表数据 只有1条如果不存在b表关联数据有也要显示
产品1 1 left right union试过了 还有只查询 都没用
产品2 null
比如说a表id为1只有12个产品 但是产品表有13个 需要显示 13个产品数据没有存在a表的产品显示产品名称其它为空值
GROUP BY 是分组,id一样的只会显示其中一条,你最好看看是不是有id一样的数据,还有那个图片出不来,你问题描述中间能不能多打几个标点,读起来真的好为难我o(╥﹏╥)o
分组是为了查询数量 看看是不是13条哦
可以这样 参考代码
select p.id pid,p.name pname,
(CASE
WHEN p.id = d.product_id THEN d.id
else null
END) stockDetailId,
(CASE
WHEN p.id = d.product_id THEN d.stock_id
else stock_id
END) stock,
(CASE
WHEN p.id = d.product_id THEN d.product_id
else null
END) productId,
(CASE
WHEN p.id = d.product_id THEN p.pic
else null
END) productPicUrl,
(CASE
WHEN p.id = d.product_id THEN p.name
else null
END) productName,
(CASE
WHEN p.id = d.product_id THEN p.sale_price
else 0
END) productPrice,
(CASE
WHEN p.id = d.product_id THEN d.six_month_exp_num
else 0
END) sixMonthExpNum,
(CASE
WHEN p.id = d.product_id THEN d.nine_month_exp_num
else 0
END) nineMonthExpNum,
(CASE
WHEN p.id = d.product_id THEN d.product_num
else 0
END) productNum,
(CASE
WHEN p.id = d.product_id THEN d.alar_info
else null
END) alarInfo,
(CASE
WHEN p.id = d.product_id THEN d.product_price
else 0
END) product_price,
(CASE
WHEN p.id = d.product_id THEN d.product_num
else 0
END) product_num
from wx_mini_product p,
wx_mini_product_stock_detail d
group by p.id,d.stock_id
ORDER BY d.stock_id;
你想要每个count的结果都是13把on后面sd.product_id=p.id 改1=1就好 。然后具体b在不在a中的情况,再加上判断逻辑进行特殊处理就好