从多个SQLite表中总结得分

时间:2014-06-18 19:50:25

标签: sqlite

我有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板中出现。这看起来像是一项相对常见的任务,因此必须有正确的方法来完成它。非常感谢任何帮助。

1 个答案:

答案 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