2014-04-07 3 views
0

Хорошо, я рисую здесь пробел и крайне нуждаюсь в вашей помощи!Обновление колонки с суммой (данными) из другой таблицы

3 таблицы:

спички (идентификатор, goals_slot_1, goals_slot_2, вон, рисовать)

команды (идентификатор, имя, score_for, score_against, выиграл, проиграл, ничья, очки)

команда матча (узловая таблица) (team_id, match_id)

Так что я хочу добиться, чтобы обновите столбец «ничья» в командах таблица SET к «сумме (ничьей)» соответствует таблица из них. Значение «ничья» в таблице совпадений «1», когда это ничья, «0», если нет.

Я просто не могу понять это. Застрял на нем в течение нескольких дней ... Может кто-то поставить меня на правильный путь?

ответ

0

Для получения значений из других таблиц вам понадобится коррелированный подзапрос. Что-то вроде:

UPDATE `teams` 
SET `draw`=(SELECT SUM(`draw`) 
      FROM `matches` 
      WHERE `id` IN (SELECT `match_id` 
          FROM `team-match` 
          WHERE `team_id`=`teams`.`id`)) 

или даже один к югу от запроса с объединением:

UPDATE `teams` 
SET `draw`=(SELECT SUM(`draw`) 
      FROM `matches` 
       JOIN `team-match` 
        ON `team-match`.`match_id`=`matches`.`id` 
      WHERE `team-match`.`team_id`=`teams`.`id`) 

Оба должны делать свою работу. Я бы предположил, что первое лучше для производительности, но не проверено и действительно должно быть в течение нескольких миллисекунд друг от друга. Помимо этого, вам нужно будет использовать php для запроса значений и обновления отдельных строк. Действительно, выигрышные/потерянные/ничьи столбцы можно было рассчитывать «на лету» с аналогичной производительностью, и вам не придется обновлять значения в каждом матче.

+0

Вот и все! Джонатан, ты босс! Огромное спасибо... – Feddman

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