我有4张表如下:
委员会1
round Nspair Ewpair NsPoints EwPpoints
1 1 1 4 0
2 4 3 2 2
3 3 4 0 4
board2
round Nspair Ewpair NsPoints EwPpoints
1 2 2 2 2
2 1 4 2 2
3 4 1 2 2
board3
round Nspair Ewpair NsPoints EwPpoints
1 3 3 3 1
2 2 1 3 1
3 1 2 0 4
board4
round Nspair Ewpair NsPoints EwPpoints
1 4 4 0 4
2 3 2 3 1
3 2 3 3 1
我想创建一个SQL查询来添加每个对点,如:
来自Board1,Board2,Board3,Board4的SELECT sum NSpoints WHERE Nspair = 1
我尝试了各种方法来实现这一目标但是当Nspair不存在时,所有这些似乎都会在上面的第4板中出现。这看起来像是一项相对常见的任务,因此必须有正确的方法来完成它。非常感谢任何帮助。
答案 0 :(得分:1)
处理此问题的最正确方法是使用board
列的单个board_number
表。
无论如何,创建一个可以像表一样处理的视图:
CREATE VIEW all_boards AS
SELECT * FROM board1 UNION ALL
SELECT * FROM board2 UNION ALL
SELECT * FROM board3 UNION ALL
SELECT * FROM board4;
...
SELECT SUM(NsPoints) FROM all_boards WHERE Nspair = 1;
或者,动态组合表格:
SELECT SUM(NsPoints)
FROM (SELECT NsPoints, Nspair FROM board1 UNION ALL
SELECT NsPoints, Nspair FROM board2 UNION ALL
SELECT NsPoints, Nspair FROM board3 UNION ALL
SELECT NsPoints, Nspair FROM board4)
WHERE Nspair = 1