0

很抱歉发布此内容,但尽管网站上有一些示例,但我无法让我的工作。

所以我有两个表如下:

电话桌

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 时,它只返回再次找到的成绩。

有任何想法吗?

谢谢

4

2 回答 2

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;
于 2010-08-04T14:47:07.243 回答
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;

顺便说一句:“名称”对于列来说是一个非常糟糕的名称,因为它是一个保留字。

于 2010-08-04T14:52:35.220 回答