0

これを投稿して申し訳ありませんが、サイトにはいくつかの例がありますが、私のものを動作させることができません.

したがって、次のように2つのテーブルがあります。

テレフォニー テーブル

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

Grade テーブルもあります。

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

これがあなたが探しているものだと思います:

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 に答える
0

Grade テーブルのみに利用可能なすべての ID が含まれているため、SELECT では telephony.GradeID の代わりに grade.ID を使用する必要があります。次のクエリを実行してみてください。

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 に答える