MS-Access中的SQL:使用COUNT,JOIN并返回0

时间:2010-08-04 14:37:42

标签: sql ms-access ms-access-2003

发布此内容的道歉但是虽然网站上有一些例子,但我无法让我的工作。

所以我有两张表如下:

电话表

ID | Name | GradeID
1    Richard   1
2    Allan     1
3    Peter

我还有一个成绩表:

ID | Name
1    1
2    2
3    3
4    4
5    5

无论如何,我正在尝试使用COUNT()和LEFT JOIN来查找在Telephony表中找到每个等级的次数,包括使用以下查询返回任何0等级:

SELECT telephony.GradeID, COUNT(*) AS Total
FROM telephony LEFT JOIN grade 
ON telephony.GradeID = grade.ID
GROUP BY telephony.GradeID
ORDER BY 1;

此查询返回找到的所有内容,但不会返回包含0个条目的所有成绩:

Grade | Total
1       2

请帮忙。我正在使用Microsoft Access 2003。


感谢您的帮助。这很有效。

但是,当我尝试合并DATE BETWEEN时,它只返回找到的成绩。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

由于只有Grade表包含所有可用ID,因此您应该在SELECT中使用grade.ID而不是telephony.GradeID。尝试执行此查询:

SELECT grade.ID, COUNT(telephony.ID) FROM grade
LEFT JOIN telephony ON telephony.GradeID = grade.ID
GROUP BY grade.ID
ORDER BY 1;

答案 1 :(得分:0)

我认为这就是你要找的东西:

SELECT grade.ID, Count(telephony.ID) AS CountOfID
FROM grade LEFT JOIN telephony ON grade.ID= telephony.GradeID
GROUP BY grade.ID
ORDER BY 1;

BTW:“名称”是列的一个非常糟糕的名称,因为它是一个保留字。