2014-06-28 43 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