对于所有记录,查询以汇总来自同一表的两个记录

时间:2018-10-30 03:20:05

标签: sql ms-access

目前,我正在为自己的幻想运动爱好构建自己的数据库。我想做的查询是找到每个记录与另一个记录的所有组合。例如,这些列是名称,薪水和总分。我希望查询在列中同时显示两个名称和它们的组合点总数。我有一个条件,我希望他们两个工资的总和低于12000。

2 个答案:

答案 0 :(得分:1)

我们可以尝试交叉连接您的表,但要确保没有重复的对,但要进行限制:

SELECT
    t1.name player1, 
    t2.name player2,
    t1.points + t2.points AS point_total
FROM yourTable t1
INNER JOIN yourTable t2
    ON t1.salary * 0 = t2.salary * 0
WHERE
    t1.name < t2.name AND
    t1.salary + t2.salary < 12000;

ON子句的解释是Access不支持正式的交叉联接操作。但是,我们可以通过对两个表的记录的每个组合都适用的条件进行内部联接来模拟它。

答案 1 :(得分:0)

MS Access使用逗号以老式的方式表示cross join。这只是MS Access中许多非标准构造之一。

因此您可以这样做:

SELECT t1.name as name1, t2.name as name2,
       (t1.points + t2.points) AS point_total
FROM t as t1,
     t as t2
WHERE t1.name < t2.name AND
      (t1.salary + t2.salary) < 12000;