2012-04-10 65 views
6

Tôi đang cố gắng để những gì tôi nghĩ sẽ là một bản cập nhật đơn giản của một bảng với tổng từ một bảng khác, nhưng vì một lý do nào đó, nó chỉ cập nhật một hàng. Đây là những gì các thông tin có liên quan từ các bảng như sau:Cập nhật bảng với SUM từ một bảng khác

trò chơi

gameplayer|points 
---------------- 
John  |5 
Jim  |3 
John  |3 
Jim  |4 

playercareer

playercareername|playercareerpoints 
----------------------------------- 
John   |0 
Jim    |0 

Bây giờ cuối cùng, tôi muốn bảng cuối cùng để trông như thế này sau chạy bản cập nhật:

trình phát sự nghiệp

playercareername|playercareerpoints 
----------------------------------- 
John   |8 
Jim    |7 

Đây là câu hỏi tôi đã cố gắng mà chỉ cập nhật hàng đầu tiên:

UPDATE playercareer 
SET playercareer.playercareerpoints = 
    (
SELECT 
    SUM(games.points) 
FROM games 
    WHERE 
    playercareer.playercareername=games.gameplayer 
    ) 

tôi dường như không thể tìm ra câu trả lời cho điều này. Cảm ơn trước cho thời gian và lời khuyên của bạn!

+0

Bạn đang sử dụng SQL Server? –

+0

Xin lỗi, tôi đang sử dụng MySQL 5.5.16. – BigJay

+3

Tôi đã thử nghiệm mã của bạn với SQL Server và nó hoạt động tốt (http://sqlfiddle.com/#!3/97125/2). Có thể bạn nên xác minh tên người chơi của mình (có thể một người có một khoảng trắng và không thể thực hiện được trận đấu). Cuối cùng, tôi khuyên bạn nên sử dụng ID thay vì Tên và sử dụng bảng quan hệ. –

Trả lời

16
UPDATE playercareer c 
INNER JOIN (
    SELECT gameplayer, SUM(points) as total 
    FROM games 
    GROUP BY gameplayer 
) x ON c.playercareername = x.gameplayer 
SET c.playercareerpoints = x.total 
+0

hey @bobwienholt đây là điều tuyệt vời nhưng nếu chúng ta có hàng triệu hàng trên cả hai bảng. Chúng ta nên xem xét các trường nào để lập chỉ mục? – hsuk

Các vấn đề liên quan