2014-04-05 2 views
0

Я довольно новый более сложный SQL и не может получить этот код, чтобы обновить правильноминус строка возврата для обновления таблицы SQL

$sql = "UPDATE bank_accounts 
    SET bank_accounts.balance = bank_accounts.balance - upgrades.cost 
    FROM upgrades 
    INNER JOIN upgrades AS u 
    WHERE u.id = :id 
    AND 
    bank_accounts.uid = :uid" 

; 
+1

Для чего вы присоединяетесь к обновлению до самого обновления? – naota

+0

Какая СУБД вы используете? Postgres? Oracle? –

ответ

0

Пара вещей ...

  1. Где: id и: uid, исходящий из?
  2. Если вы добавили псевдоним «u», вам всегда нужно использовать «u», поэтому вы не можете набрать «upgradees.cost». Это должно быть «u.cost».
  3. Также вы указали «обновления» дважды в предложении FROM.

Попробуйте это, может быть?

$sql = "UPDATE bank_accounts 
      SET bank_accounts.balance = bank_accounts.balance - u.cost 
     FROM upgrades u INNER JOIN bank_accounts 
      ON u.id = back_accounts.id"; 

Еще одна мысль ... обновления заставляют меня нервничать, поэтому я всегда хотел сделать SELECT, на данных перед выполнением обновления.

SELECT bank_accounts.balance as BEFORE, bank_accounts.balance - u.cost as AFTER 
FROM bank_accounts, upgrades u 
    ON u.id = bank_accounts.id 
Смежные вопросы