2010-07-21 80 views
0

我可能这里有棍子的错误结束,但我认为,外连接应该给我的一切,均是(比方说)左表中的记录,与匹配沿来自右表的结果,以及没有匹配的空值。多表外连接问题

我有3个表,我需要查询。人与细节有直接的1:1关系。第三张表是时间。这存储了每周每个项目每个人工作的小时数。我需要计算每个人每周所承受的周数。

下面给出了我,每一个用户已经把时间缩短到只要他们放下>1周

SELECT name, detail.clock, COUNT(DISTINCT(week)) 
FROM person, detail,  
WHERE person.ref = detail.person 
AND detail.clock = time.clock 
WHERE time.week >= "2010-07-01" 
GROUP BY detail.clock 

即这将显示80/100人谁拥有的周数进入时间。

不过,我需要看看谁还没把时间倒那些20人,所以我尝试了下面的外部联接

SELECT name, detail.clock, COUNT(DISTINCT(week)) 
FROM person LEFT OUTER JOIN detail ON person.ref = detail.person 
LEFT OUTER JOIN time ON detail.clock = time.clock 
WHERE time.week >= "2010-07-01" 
GROUP BY detail.clock 

但是这给了我完全相同的结果作为第一个查询。

编辑:我刚刚发现了这个问题的一部分。在伪代码的原始版本中,没有按日期过滤。我刚刚发现,删除的日期过滤器如预期的查询行为更多 - 尽管速度太慢是有用的,日期是非常重要的。

回答