【问题标题】:alternative sql syntax for joined table update连接表更新的替代 sql 语法
【发布时间】:2017-10-02 14:58:47
【问题描述】:

我的 sql 需要替代语法,将 qty 从另一个表中扣除到我的原材料表中

$sql3 = "UPDATE material_inventory 
         join product_check 
         ON material_inventory.qty = material_inventory.qty 
         SET material_inventory.qty = material_inventory.qty - product_check.qty 
         WHERE product_check.pc_id = '$id' 
         AND product_check.date2 = '$date' 
         LIMIT 1";
$result3 = mysqli_query($conn,$sql3);

看起来限制在使用连接子句的连接更新中不起作用。 总之谢谢

【问题讨论】:

  • Limit 确实适用于连接更新。 ON material_inventory.qty = material_inventory.qty 基本上是 1=1 这意味着你有一个笛卡尔积。这可能不是你想要的。
  • 我也可以确认它有效。现在,这告诉您,您的逻辑中有一个明显的漏洞,并且取决于您如何测试它是否有效,可能是一个非常大的漏洞,也可能是一个相当小的漏洞。你是如何断定它不起作用的?
  • 感谢您的回复,我现在应该怎么做您有替代语法吗? @bassxzero
  • @erwin 语法不是问题,你的逻辑是。发布您的完整表格结构和预期结果。
  • @erwin 那是因为ON 条件错误,如第一条评论所述。

标签: php sql syntax


【解决方案1】:

看起来您的ON 条件有误。在您添加相关表的架构之前,我只能从给定场景中建议以下查询:

$sql3 = "UPDATE material_inventory 
         join product_check 
         ON material_inventory.qty = product_check.qty        //modified line
         SET material_inventory.qty = material_inventory.qty - product_check.qty 
         WHERE product_check.pc_id = '$id' 
         AND product_check.date2 = '$date' 
         LIMIT 1";
$result3 = mysqli_query($conn,$sql3);

如果上述查询没有得到想要的输出,请添加架构,以便我提供更准确的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2011-05-05
    • 2011-01-08
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 2017-12-30
    相关资源
    最近更新 更多