【问题标题】:WHERE clause with SET and UPDATE clauses带有 SET 和 UPDATE 子句的 WHERE 子句
【发布时间】:2012-11-20 17:19:34
【问题描述】:

我必须开始,这里有很多示例,但没有一个适用于我必须使用的多个(在我的情况下为 3)表。

这样做的想法是:当我更新我的一个表(事物)时,我希望我的触发器自动更新另一个表(当前),其乘积值为 2 列(来自 dudes 表的薪水和来自事物的 thing_cost)到curr_cash 列。

我希望它看起来像:

Money : Date : Id1 (id of person) : Id2 (Id of thing)

例子:

400 03-12-12 34 3
300 03-12-12 34 2
400 03-12-12 4 3

等等。

目前我的触发器所做的是将所有内容相加并将其与购买某物的人相关联..逻辑失败。

这是我的触发器代码:

create trigger money after update on `things`
for each row
begin
SET @c1 = (SELECT sum(`thing_cost`) from `things`);
SET @c2 = (SELECT sum(`salary`) from `dude_base`);
UPDATE `current` SET `curr_cash` = @c1 * @c2 / 100
end;
$$

我需要添加类似这样的东西而不是 sum:

WHERE id2 from things = id2 from current AND WHERE id1 from dude_base = is1 from current

但是我的语法失败得很惨。我在 xampp (phpmyadmin) 上研究 MySQL。

总结一下, 我必须知道一个花花公子买了什么(确切的 ID),以及什么东西(确切的 ID)。

【问题讨论】:

    标签: mysql sql triggers where where-clause


    【解决方案1】:

    您可以使用JOIN 来执行此操作,如下所示:

    UPDATE `current` c 
    INNER JOIN things    t ON c.id2 = t.id2
    INNER JOIN dude_base d ON d.id1 = c.is1
    SET c.`curr_cash` = t.thing_cost * d.salary / 100;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-28
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多