我在使用不同属性的3个表格中查询SQL语句时遇到了一些问题。下面是我想在他们每个人的查询表和属性:具有不同表格的三个不同表格的SQL查询
news_stories - 时间,标题
per_minute_quotes - security_id,时间戳,last_price
证券 - 名称,id_bb ,编号
我想要做的是从证券表中检索证券名称,id,从* news_stories *表中找到与该证券相对应的头条新闻,并找到last_price fo从per_minute_quotes表中读取该文章的同时安全性。
这是否有意义?请看看我已经设法做到如此遥远......
SELECT DISTINCT
`news_stories`.`time`
, `securities`.`name`
, `adjusted_daily_quotes`.`security_id`
, `news_stories`.`headline`
, `securities`.`id_bb`
, `securities`.`id`
FROM
`schema`.`adjusted_daily_quotes`
, `schema`.`securities`
, `schema`.`news_stories`
WHERE ((`adjusted_daily_quotes`.`security_id`) = '498'
AND (`securities`.`id`) = '498'
AND (`securities`.`id_bb`) LIKE '267%'
AND (`news_stories`.`headline`) LIKE '%:267')
LIMIT 0,50;
这将基本上做我的查询的第一部分,即。它与last_price没有关联。这是我在尝试这样做:
SELECT DISTINCT
`news_stories`.`time`
, `securities`.`name`
, `per_minute_quotes`.`security_id`
, `news_stories`.`headline`
, `securities`.`id_bb`
, `securities`.`id`
, `per_minute_quotes`.`timestamp`
, `per_minute_quotes`.`last_price`
FROM
`schema`.`per_minute_quotes`
, `schema`.`securities`
, `schema`.`news_stories`
WHERE ((`per_minute_quotes`.`security_id`) = '498'
AND (`securities`.`id`) = '498'
AND (`securities`.`id_bb`) LIKE '267%'
AND (`news_stories`.`headline`) LIKE '%:267 HK'
AND (`per_minute_quotes`.`timestamp`) <= (`news_stories`.`time`))
LIMIT 0,5;
然而,这个查询返回由于某种原因,相同标题的5,都具有相同的时间。我真的很感谢帮助形成这个查询。这与DISTINCT运算符有什么关系?我试过使用GROUP BY,但没有运气。
在此先感谢!
非常感谢你的回应Michael!不幸的是,当我运行它时,我的数据库软件给我“错误代码:1146表'per_minute_quotes.security_id'不存在”。我花了很长时间试图找出问题所在,但似乎找不到它。你知道什么可能是错的吗? 这里是代码:http://pastebin.com/RxEehVX5 – Philip 2012-03-17 10:00:18
试试这个版本:http://pastebin.com/2WjY0M4Y – 2012-03-18 05:44:12
仍然无法得到它的工作 - 我用你的代码,但它给了错误。稍微编辑它以删除错误(添加第16行),它已经运行了一小时,似乎永远不会结束......我想这是交叉查询3个表,但给出5行限制,它似乎很奇怪,它需要长。你有什么想法吗? http://pastebin.com/WZrYwMdd – Philip 2012-03-18 12:25:57