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