2012-09-15 173 views
1

我有两个表加入时间戳范围

raw_commits(sha,date,author) 

milestones(name,start,end) 

其中milestones表包含所有项目的里程碑的时间戳范围。

我如何去有关JOIN实现以下不确定:

对于每个raw_commits,显示raw_commits.sha, raw_commits.date, raw_commits.author, milestones.name如果有一个里程碑,表明NULL如果它不“属于”一个里程碑,并显示每个里程碑的重复行,如果提交“属于”多个milestones

明显通过使用raw_commits.date作为参考即raw_commits.date >= milestones.start AND raw_commits.date <= milestones.end来完成对milestones的分类。

如何实现所描述的行为?

回答

2
SELECT 
    raw_commits.sha, 
    raw_commits.author 
    raw_commits.date, 
    milestones.name 
FROM 
    raw_commits 
LEFT OUTER JOIN 
    milestones 
ON 
    raw_commits.date BETWEEN milestones.start AND milestones.end