Получив этот бит SQL в качестве скрипта обновления, я попытался добавить рабочий раунд, чтобы не иметь возможности включать таблицу в выражение в качестве условия, поэтому использовать подзапросы, но изо всех сил пытался получить это работа.
По сути, мне нужно обновить значение в таблице 1 суммированием поля в таблице 2, но только в тех случаях, когда два других поля совпадают в паре таблиц и на основе поля6, ограничение применяется к предложению обновления.
UPDATE table1 W SET Field1=(SELECT field2 FROM
(SELECT A.id, B.field3, SUM(A.field2) AS field2
FROM table2 A, table3 B, table4 P
WHERE A.id=B.id AND P.field6=B.field6) B ) WHERE W.field6=B.field6
В примере с реальным миром выберите сумму очков, пропущенных в игре в регби, когда игрок в регби принял участие в матче. Таблица 2 содержит результаты (включая счет). Таблица 3 содержит таблицы команд, а таблицы 1 и 4 - это те же таблицы игроков, которые необходимо обновить.
Надеюсь, это достаточно ясно, и кто-то может указать мне правильное направление.
Попробовал следующее:
UPDATE $WSLKEEP W, $WSLFIX A, $WSLFIXPLAY B
SET W.F_CONCEDED=SUM(A.F_AGAINST)
WHERE A.F_ID=B.F_GAMEID
AND B.F_NAME=W.F_NAME"
но теперь застрял с:
Неправильное использование групповой функции
С уважением