2015-11-14 134 views
0

你好,我想用JOIN將它綁定到一個查詢。 這是如何工作:如何在UPDATE中使用JOIN查詢

Db::bind("uid", strip_tags($userid)); 
DB::bind("user_id", strip_tags($refer)); 
Db::bind("points_earn", strip_tags($points_earn)); 
Db::bind("points_refer", strip_tags($points_refer)); 
Db::query("UPDATE referrals SET `points_earn` = :points_earn WHERE new_id = :uid"); 
Db::query("UPDATE users SET `points` = `points` + :points_refer WHERE id = :user_id"); 

我認爲,但沒有工作。

Db::query("UPDATE referrals r JOIN users u ON r.user_id = u.id SET `r.points_earn` = :points_earn WHERE r.new_id = :uid AND `u.points` = `u.points` + :points_refer WHERE u.id = :user_id"); 

有沒有人有解決方案?

回答

1

你的語法是正確的,但後面蜱是錯誤的,每個SELECT只有一個WHERE

UPDATE referrals r JOIN 
     users u 
     ON r.user_id = u.id 
    SET r.points_earn = :points_earn 
    WHERE r.new_id = :uid AND u.points = u.points + :points_refer AND 
     u.id = :user_id; 

與反引號的問題是,下面有很大的不同:

`r.points_earn` 
`r`.`points_earn` 

的首先引用一個名爲「r.points_earn」的列。第二個是指「r」中的「points_earn」列。反引號是沒有必要的,所以你可以刪除它們。

+0

感謝快速回答,他們知道,以 「u.points = u.points +:points_refer和 u.id =:USER_ID;」 u.id =:user_id的含義是WHERE?因爲不得不改變u.id =:user_id所在的點 – Stadoo

相關問題