2012-08-07 58 views
2

我刚开始使用SQL,并且一直在搜索谷歌以获得快速提示,直到现在,但是我一直在这个问题上停留了一段时间。从一个表中选择数据,条件是来自另一个表的两个唯一值

我有两个表格,Stock_Data有2列,Id和Date。第二个表非常大,包含几百万行数据,称为Options_Data。这第二张表还有一个Id列和一个Date列以及大约12个额外的数据列,我想下载。

我想什么做的是

for each row i in Stock_Data 

SELECT * FROM Option_Data where Option_Data.Id = Stock_Data.Id(i) 

AND WHERE Option_Data.Date BETWEEN Stock_Data.Date-60 days and Stock_data.Date+60 days 

end 

本质;从股票数据中获取股票ID和唯一的事件日期,返回到Option_Data并在事件日期前后60天取出该股票ID的数据。

我只有真的在matlab中正确编码,因此循环类比和伪代码。 我可以使用Id的唯一解决问题,但它涉及下载更多的数据比必要的,这是每个ID的唯一范围的数据,让我陷入困境。

回答

0
SELECT 
    Option_Data.* 
FROM 
    Stock_Data 
INNER JOIN 
    Option_Data 
    ON Option_Data.ID = Stock_Data.ID 
    AND Option_Data.Date BETWEEN Stock_Data.Date-60 and Stock_data.Date+60 
+0

你不需要日期间隔吗? 'Stock_Data.Date - INTERVAL 60 DAY and Stock_data.Date + INTERVAL 60 DAY' – Cfreak 2012-08-07 15:36:34

+0

@Cfreak - AFAIK *(我很乐意纠正)*您的建议在语法上是正确的,但是当省略INTERVAL时,一个隐式转换,默认为+/-'DAY's。 – MatBailie 2012-08-07 15:38:19

+0

谢谢菲尔布特,它像一个魅力一样工作,为我节省了数小时的试验和错误,非常感谢! – user1582315 2012-08-07 19:35:01

相关问题