2014-06-28 45 views
1

我有一个mysql数据库有两个表,usersitems。我想用UPDATE从items(我可以这样做)更新一行中的变量,然后更新users中相关行的变量。mysql更新相关行

我对使用外键更新感到困惑,这是可能在一个查询?我如何去做这件事?

编辑

目前我在PHP这样做:

//execute the SQL query and return records 
$result = mysqli_query($dbhandle, "UPDATE items SET likes = likes + 1 WHERE id='$_POST[id]'") 
    or die("Unable to query"); 

// update user score 
$score = mysqli_query($dbhandle, "UPDATE users u JOIN items i ON u.id = i.user_id SET u.score = u.score + i.likes") 
    or die("Unable to update user score"); 

在项目每一行都有一个外键“user_id的”,我只是想更新相关用户的得分基础上如何很多喜欢新更新的项目现在已经

+0

请编辑您的问题与样本数据,数据布局,以及你想要的结果。 –

回答

1

可以在表都做Join并执行UPDATE像(以下样本)

UPDATE users u 
    JOIN items i ON u.some_col = i.some_col 
SET u.column1 = i.column1 

另外,如果你有表之间定义,那么你可以使用ON UPDATE CASCADE一个foreign key关系(你必须定义而创建表或执行ALTER和更改架构),这将级联主要和派生表的更新。

+0

我试过了,但我没有运气:UPDATE users u JOIN ideas i ON u.id = i.user_id SET u.score = u.score + i.likes – shane

+0

奇怪!你可以准备一个小提琴(http://sqlfiddle.com/)与更新查询中涉及的那两个表。 – Rahul

+0

谢谢Rahul,我接受了你的建议 – shane