Обновление таблицы с использованием подзапроса - PullRequest
0 голосов
/ 30 июля 2011

Как видите, я хочу сделать следующее:

[1] получить author_id записи, которая соответствует $toggled в таблице forum_qa

[2] обновление репутация в user_profiles , где user_id соответствует author_id

    UPDATE  user_profiles

    (SELECT forum_qa_author_id AS author_id
    FROM    forum_qa
    WHERE   forum_qa_id = $toggled) AS f

    SET     user_profiles.reputation = user_profiles.reputation - 15
    WHERE   user_profiles.user_id = f.author_id

Thisдает мне синтаксическую ошибку 1064 в (SELECT....

Есть идеи, что я здесь не так делаю?

Спасибо за помощь!

Ответы [ 3 ]

4 голосов
/ 30 июля 2011

Попробуйте:

UPDATE  user_profiles
SET     user_profiles.reputation = user_profiles.reputation - 15
WHERE   user_profiles.user_id = (SELECT forum_qa_author_id AS author_id
FROM    forum_qa
WHERE   forum_qa_id = $toggled)
0 голосов
/ 30 июля 2011
UDPATE up set reputation = reputation - 15 
FROM user_profiles up inner join forum_qa fq on (up.user_id = fq.forum_qa_id) 
WHERE forum_qa_id = $toggled

Я только что понял, что вы используете MySQL.Это для MS SQL, я не уверен, что вы можете использовать его точно так же, как в MySQL, но, надеюсь, это немного поможет ..

0 голосов
/ 30 июля 2011

Подзапрос должен идти после «SET». В этом случае может не потребоваться подзапрос ...

попробуй ...

UPDATE user_profiles
   SET user_profiles.reputation = user_profiles.reputation - 15
  FROM user_profiles
  JOIN forum_qa f ON user_profiles.user_id = f.author_id
   AND forum_qa_id = $toggled
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...