Colesce 和内连接

Colesce sum inner join

早上好, 我在群里看了很多关于这个问题的资料,但我真的不明白为什么我的代码不起作用。 如果我在总数中添加产品,一切都可以;如果我删除一些产品,总数仍然正确,但如果没有产品,总数不会变为 0 或 null,但它与上次计算保持相同。

我以为 Coalesce 解决了我的问题,但它仍然不起作用。

这是我的 phpmyadmin 代码:

UPDATE orders o 
                INNER JOIN
                (
                   SELECT order_id, COALESCE(SUM(totale),0) 'sumu'
                   FROM OrdineProdotto 
                   GROUP BY order_id
                ) i ON o.order_id = i.order_id
                SET o.totale_ordine = i.sumu
                WHERE o.order_id = $ordID

其中 $ordID 显然是订单号。

非常感谢您的帮助。

如果子查询不包含特定 order_id 的行,则 orders 中具有该 order_id 的行将不会因为连接而更新。
而是使用相关的子查询:

UPDATE orders o 
SET o.totale_ordine = (
  SELECT COALESCE(SUM(op.totale), 0) 
  FROM OrdineProdotto op 
  WHERE op.order_id = o.order_id
)
WHERE o.order_id = $ordID;