2010-09-13 5 views
1

У меня есть вопрос относительно обновления базы данных MySQL.MySQL Обновление столбца в зависимости от нескольких таблиц

У меня есть три таблицы: матч, подчинение и подача. SubmissionVersion можно установить как «Избранное». Но я не могу просто запросить UPDATE SubmissionVersion SET IsFavorite = 1 WHERE ID = $ID из-за связи с представлением и чем совпадением. Мой вопрос в том, как я могу обновить столбец SubmissionVersion с MySQL Query с двумя объединениями? Я пробовал этот запрос, но я не могу заставить его работать.

UPDATE 
    SubmissionVersion 
JOIN 
    Submission 
ON 
    Submission.ID, SubmissionVersion.SubmissionID 
JOIN 
    Match 
ON 
    Match.ID ON Submission.MatchID 
SET 
    SubmissionVersion.IsFavorite = ".$Index." 
WHERE 
    SubmissionVersion.ID  = ".$ID." 
AND 
    Match.ID   = ".$MatchID 

ответ

1
UPDATE SubmissionVersion sv 
SET sv.IsFavorite = ".$Index." 
WHERE sv.ID = ".$ID." 
AND sv.ID IN (
     SELECT s.ID 
     FROM Submission s 
     WHERE s.MatchID = ".$MatchID'") 

Если я понимаю ваше заявление правильно, это должно работать.

Я полностью исключил таблицу соответствия, так как вы просто проверяете значение по столбцу в разделе «Представление».

+0

Большое спасибо! Это работает! – Ben

+0

Кстати, в запросе была одна ошибка. sv.ID должен был быть sv.SubmissionID, понял это сам, увидев некоторые странные обновления в базе данных;) Спасибо! – Ben

0

Начнем с того, что MATCH является зарезервированным словом для MySQL, поэтому его нужно добавить в обратные ссылки.

http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html

+0

У меня есть это в backticks, но у SO есть обратные ссылки, зарезервированные для кодифицирования :) Спасибо за упоминание кстати. – Ben

+0

Hah ... полностью забыл: D – Mchl

Смежные вопросы