MS Access中的SQL:使用计数、联接和返回0
很抱歉发布了这篇文章,但尽管网站上有一些例子,我还是无法让我的工作 因此,我有两个表格如下: 电话桌MS Access中的SQL:使用计数、联接和返回0,sql,ms-access,ms-access-2003,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来找出在电话表中找到每个等级的次数,包括通过使用以下查询返回0的任何等级: SELECT tel
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来找出在电话表中找到每个等级的次数,包括通过使用以下查询返回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
谢谢你的帮助。这很有效 然而,当我尝试在两者之间加入日期时,它只返回再次找到的分数 有什么想法吗
谢谢因为只有Grade表格包含所有可用ID,所以您应该在SELECT中使用Grade.ID,而不是TEPHONY.GradeID。尝试执行此查询:
SELECT grade.ID, COUNT(telephony.ID) FROM grade
LEFT JOIN telephony ON telephony.GradeID = grade.ID
GROUP BY grade.ID
ORDER BY 1;
我想这就是你想要的:
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;
顺便说一句:“Name”是一个非常糟糕的列名称,因为它是一个保留字。Peter的GradeID是多少?空?告诉我。我被困在一个数据库中,每个表都有ID和Name列。