我准备好了这个查询:
SELECT s.clubnr, sum(iif(s1.positie = "KP", 1, 0 )) AS AantalKeepers
FROM Selectie AS s, Speler AS s1, club c
WHERE s.spelernr = s1.spelernr
AND s.clubnr = c.clubnr
GROUP BY s.clubnr;
它返回以下结果:
clubnr AantalKeepers
1 4
2 5
3 3
4 4
5 3
6 4
7 3
8 2
9 3
10 3
11 3
12 4
13 4
14 4
15 3
16 3
17 3
18 3
来自俱乐部的球员,他们的位置是" KP"但问题是结果只给了我那些球员的俱乐部。
我有22个俱乐部,但查询给了我18个回报。因为其他4个俱乐部(19到22岁)没有任何" KP"的球员。所以我需要获得那些俱乐部,然后查询返回0。
我已经在论坛中查看并在几个主题中看到了LEFT JOIN。这是一个我不理解的Acces SQL级别。
有人可以帮我这个吗?多久以来一直坚持这一点,我们将不胜感激。
为了更好地查看,此处是查询所在的文件:Here 谢谢大家。
答案 0 :(得分:0)
ANSI SQL语法。不确定Access是否需要一些额外的括号......
SELECT s.clubnr, sum(iif(s1.positie = "KP", 1, 0 )) AS AantalKeepers
FROM Selectie AS s
LEFT JOIN Speler AS s1 ON s.spelernr = s1.spelernr
LEFT JOIN club c ON s.clubnr = c.clubnr
GROUP BY s.clubnr;
答案 1 :(得分:0)
通过删除SELECT子句中的IIF可以解决您的直接问题。 E.g。
SELECT s.clubnr, sum(*) AS AantalKeepers
FROM Selectie AS s, Speler AS s1, club c
WHERE s.spelernr = s1.spelernr
AND s.clubnr = c.clubnr
GROUP BY s.clubnr;