我有两个表tournaments
和pinsheets
。表如下所示:
CREATE TABLE "pinsheets" (
"tournament" INTEGER,
"year" INTEGER,
"course" INTEGER,
"round" INTEGER,
"hole" INTEGER,
"front" INTEGER,
"side" INTEGER,
"region" INTEGER
);
数据示例:
2 2015 6 1 1 18 C
2 2015 6 1 2 8 4 L
2 2015 6 1 3 22 C
2 2015 6 1 4 45 4 R
2 2015 6 1 5 26 6 L
和
CREATE TABLE "tournaments" (
"tournament" INTEGER,
"year" INTEGER
);
样品:
2 2015
2 2016
2 2017
2 2018
2 2019
表tournaments
包含所有理论上可能的数据。实际收集的信息保存在pinsheets
中。我想循环tournaments
,看看我遗漏了哪些观测。基本上,方法如下:
- 获取锦标赛/年份组合
- 检查第{1,2,3,4}轮是否存在
pinsheets
中的锦标赛/年份/轮组合
我的失败尝试:
SELECT *
FROM tournaments t
WHERE NOT EXISTS (
SELECT *
FROM pinsheets pin
WHERE t.tournament = pin.tournament
AND t.year = pin.year
AND (pin.round = 1
OR pin.round = 2
OR pin.round = 3
OR pin.round = 4)
)
所需输出:
tournament year round
2 2015 3
2 2016 2
2 2017 2
1条答案
按热度按时间fnx2tebb1#
您需要将
tournaments
与rounds
的所有可能值进行CROSS
联接(可以通过CTE
获得):或者,使用
LEFT
联接到pinsheets
:请参阅demo。