即使没有查询结果,如何显示行

时间:2015-10-07 21:21:51

标签: ms-access

我必须显示一小时内所需的人数。 我有两张桌子:

Table 1: Time
0:00
1:00
2:00
...
22:00
23:00

然后是预定的时间和日期

Table 2:
2:00 , 3people , 10-6-15
5:00 , 1people , 10-6-15
9:00 , 2people , 10-2-15

所以我想要的是:

On 10-6-15
enter code here
0:00 0
1:00 0
2:00 3
3:00 0
4:00 0
5:00 1
6:00 0
7:00 0
8:00 0
9:00 0
10:00 0
11:00 0
12:00 0
13:00 0
14:00 0
15:00 0
16:00 0
17:00 0
18:00 0
19:00 0
20:00 0
21:00 0
22:00 0
23:00 0

问题是,如果我没有设置日期范围,它可以正常工作,但是当我这样做时,它开始只有那些轮班人员。

我的代码是:

Select distinct [Time] from [Table1] left join [Schedule] on
[Table1].[Time]=[Schedule].[Time] where [Schedule].[Date] = #10/6/15#
Group by [Table1].[Time];

它给了我

2:00 3
5:00 1

我使用正确的加入吗?还有其他我想念的东西吗?

1 个答案:

答案 0 :(得分:2)

您似乎错过了一些查询,但我认为问题在于限制WHERE子句中的日期而不是JOIN。

尝试:

Select 
  [Date],
  [Time],
  sum(ppl) 
from 
  [Table1] left join 
  [Schedule] on
  [Table1].[Time]=[Schedule].[Time] and 
  [Schedule].[Date] = #10/6/15#
Group by 
  [Date],
  [Table1].[Time]

我认为你必须分两步完成。有一个查询限制您的left outer join表: QRY:

Select 
  * 
from 
  [Schedule] 
where
  [Schedule].[Date] = #10/6/15#

然后第二个人做left outer join

Select 
  [Date],
  [Time],
  sum(ppl) 
from 
  [Table1] left join 
  qry on
  [Table1].[Time]=qry.[Time] 
Group by 
  [Date],
  [Table1].[Time]