我在使用不同屬性的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