2016-06-02 5 views
0

Это мой UNION ЗапросUNION Запрос обновить таблицу

INSERT INTO Master (Player, Won, Lost) 
SELECT Player, Sum(Won), Sum(Lost) FROM (
    SELECT First([Master Data Results 2013 - 2016].[Winner]) AS Player, 
    Count([Master Data Results 2013 - 2016].[Winner]) AS Won, 
    0 AS Lost 
    FROM [Master Data Results 2013 - 2016] 
    GROUP BY [Master Data Results 2013 - 2016].[Winner] 
    HAVING (((Count([Master Data Results 2013 - 2016].[Winner])) > 1)) 

    UNION 

    SELECT First([Master Data Results 2013 - 2016].[Loser]) AS Player, 
    0 as Won, 
    Count([Master Data Results 2013 - 2016].[Loser]) AS Lost 
    FROM [Master Data Results 2013 - 2016] 
    GROUP BY [Master Data Results 2013 - 2016].[Loser] 
    HAVING (((Count([Master Data Results 2013 - 2016].[Loser])) > 1)) 
) 
GROUP BY Player 

Этот запрос делает все, что я хочу, за исключением, конечно, 1 вещь. Когда записи в моих MASTER DATA RESULTS 2013 -2016 обновлены новыми записями, и я запускаю свой запрос, как здесь выше моя таблица MASTER все испорчена. Вместо обновления таблицы запрос просто добавляет снова всех игроков с новыми номерами.

Как я могу убедиться, что запрос не добавляет строки в таблицу MASTER, а просто обновляет поля Won и Lost в таблице MASTER?

Я играл с уникальными значениями и UPDATE, но без Succes

ответ

1

Вы не можете обновить таблицу непосредственно с помощью запроса с UNION или GROUP BY, такие кинг запросы не будут обновляемыми. Вы можете или удалить все строки из главной таблицы перед вставкой новых строк или если в главной таблице содержится информация, которая должна храниться как есть, просто обновите несколько строк игроками из вашего запроса объединения, вставьте данные из этого запроса во временную таблицу и затем обновить основную таблицу по запросу со связанными основными и временными таблицами.

Запрос на обновление главной таблицы данными из таблицы MasterTemp должно быть так:

UPDATE Master INNER JOIN MasterTemp ON Master.Player = MasterTemp.Player 
SET Master.Won = [MasterTemp].[Won], Master.Lost = [MasterTemp].[Lost]; 
+0

Я, кажется, бороться с этим. Поэтому я использовал запрос UNION для получения моей информации в таблицу MASTERTEMP. Я, чем попытался ПРИСОЕДИНЯТЬСЯ к таблице MASTER и MASTERTEMP. Это работает, но запрос не обновляет Column Won и Lost в Masterfile, он просто добавляет новые записи – Wouter

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