带有SET和UPDATE子句的WHERE子句

时间:2012-12-03 08:57:34

标签: mysql sql triggers where where-clause

我必须从这里开始有很多例子,但它们都不适用于我必须使用的多个(在我的情况下是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;
$$

我需要添加这样的东西而不是总和:

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

但我的语法失败了。我在xampp(phpmyadmin)上使用MySQL。

总结一下, 我必须知道一个家伙买了什么(确切的id),以及什么东西(确切的id)。

1 个答案:

答案 0 :(得分: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;