mysql联查数据显示问题求助

现在统计下数据效果个代码

 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表的产品显示产品名称其它为空值

3个回答

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中的情况,再加上判断逻辑进行特殊处理就好

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!