Mysql数据库用户余额和购物车在两个表中,如何用用户余额减去求出来的购物车表里的商品总金额啊

问题遇到的现象和发生背景

求和前orderby表(购物车)

img


求和后orderby表

img


tuser表(会员信息)

img

问题相关代码,请勿粘贴截图

img

img

运行结果及报错内容

img

我的解答思路和尝试过的方法

我想用左连接或者右连接把sum出来的totalprice与tuser合并为一个表再进行查询,但是总是报错

我想要达到的结果

到底要咋做才能把这两个表连起来

左连接时字段不存在才导致报错。

img

img


你上面提示的是找不到字段orderby .Totalgprice。

在往下看

img


报错位置是133行,即

img


而133行,执行的是sql5

img

和起来就是sql5这个sql语句字段orderby .Totalgprice是未知的,在orderby 表中没有这个字段。


再来扩展说下,你这边的处理是有问题的,像你的订单表里,应该有user的id来做关联查询,比如说在orderby 中加一个uid,你想做的是用户余额减去购物车的金额,那么sql可以这样写:

select tuser.uid,
       tuser.uname,
       tuser.upsw,
       tuser.umoney,
       tuser.uscore,
       (tuser.umoney -
        ifnull((select SUM(orderby.gprice) from orderby where orderby.uid = tuser.id), 0)) as balanceMoney
from tuser
         left join orderby on tuser.uid = orderby.uid;

如果只是更新的话,可以这样写

update tuser
set tuser.umoney=tuser.umoney - ifnull((select SUM(orderby.gprice) from orderby where orderby.uid = tuser.id), 0)
where tuser.uid=?;

?为要更新的用户id

这个表结构设计是不是有问题?你怎么确定购物车里的东西是哪个用户的?按总金额匹配?难道就不会有两个人买了同样金额的东西么?
还是说购物车是全局临时表?但你这java应用是跑连接池的,不可能会用上全局临时表啊