2016-02-28 2 views
0

Я пытаюсь обновить общие ucipoints всадников, следуя примеру с небольшими изменениями, но я просто получаю сообщение об ошибке.SQL: SUM и ошибка запроса Update,

пример

UPDATE P 
SET extrasPrice = t.TotalPrice 
FROM BookingPitches AS P INNER JOIN 
(
    SELECT 
    PitchID, 
    SUM(Price) TotalPrice 
    FROM 
    BookingPitchExtras 
    GROUP BY PitchID 
) t 
ON t.PitchID = p.ID 

Я получил код из этого ответа: SQL Update to the SUM of its joined values

Мой код выглядит следующим образом:

UPDATE P 
SET ucipoeng = t.TotalPoints 
FROM rytterlagsesong AS P INNER JOIN 
(
    SELECT 
    rytterid, 
    SUM(poeng) AS TotalPoints 
    FROM 
    t_ucipoeng 
WHERE year(dato)='2016' 
    GROUP BY rytterid 
) t 
ON t.rytterid = P.rytterid AND t.sesong='2016' 

я получаю ошибку:

1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MariaDB для корректного синтаксиса использовать вблизи «FROM rytterlagsesong AS P INNER JOIN (SELECT rytterid, SUM (UCIP» в строке 3

Может кто-то помочь мне найти ошибку?

DB Состав: rytterlagsesong: rytterid - ucipoeng - Sesong t_ucipoeng: rytterid - Дато - Поэнг

Так что я хочу подвести точки (Поэнг) всех рас в 2016 году (Дато = дата) для всадника И обновление что всадники totalpoint (ucipoeng) за этот сезон (sesong)

+0

это T-SQL синтаксиса –

ответ

1

update/join для каждой базы данных. Для mysql, используйте:

UPDATE rytterlagsesong r 
    INNER JOIN (
     SELECT rytterid, SUM(poeng) AS TotalPoints 
     FROM t_ucipoeng 
     WHERE year(dato)='2016' 
     GROUP BY rytterid 
    ) t ON t.rytterid = r.rytterid AND t.sesong='2016' 
SET r.ucipoeng = t.TotalPoints 
+0

работал отлично! Нашел одну маленькую опечатку, это была моя ошибка, t.sesong должен быть r.sesong (это неправильно в моем оригинальном посте тоже) – FingeNB