我目前不得不像下面那樣運行一次性工作報告過程。SQL只選擇每個ID的一次,由最早的日期時間選擇
但是,對於表中的每個項目,都有多個關聯的「消息」全部保存,這意味着每個項目會多次返回。我只想顯示每個項目一次,根據下面的示例和進一步解釋。
我意識到這是(至少在我看來)一個貧窮的結構,但需要做的報告,這是該數據是如何存儲:-(
SQL小提琴:http://sqlfiddle.com/#!6/76fce/8
查詢:
SELECT messageId, receiver, createdDate, itemId from messages_0,items WHERE
itemId IN (1, 2, 3)
AND (receiver = '100' OR receiver = '200')
AND messages_0.description LIKE '%'+items.name+'%'
union all
SELECT messageId, receiver, createdDate, itemId from messages_1,items WHERE
itemId IN (1, 2, 3)
AND (receiver = '100' OR receiver = '200')
AND messages_1.description LIKE '%'+items.name+'%'
注:有兩個消息表,因此工會的所有
級實施例的消息:
messageId | receiver | createdDate | description
--------------
1 | 100 | 2012/11/27 12:00 | The Dog is awesome
2 | 100 | 2012/11/27 13:00 | Now the Dog is boring
4 | 200 | 2012/11/27 11:30 | I have Wood :-)
實施例的項目:
itemID | name
--------------
1 | Dave
2 | Dog
3 | Wood
結果:
messageId | receiver | createdDate | itemId
1 | 100 | 2012/11/27 12:00 | 2
2 | 100 | 2012/11/27 13:00 | 2
4 | 200 | 2012/11/27 11:00 | 3
然而,我只需要笑每個項目一次。顯示只有最早的行(由createdDate表示)。
目標成果:
messageId | receiver | createdDate | itemId
1 | 100 | 2012/11/27 12:00 | 2
4 | 200 | 2012/11/27 11:00 | 3
我怎樣才能做到這一點的SQL(的Sybase)? 到目前爲止,我一直在尋找兩個組(由只會返回一個id)和某種子查詢,但一直無法獲得任何工作!
SQL小提琴:http://sqlfiddle.com/#!6/76fce/8
什麼是第4項? – Tomalak
我的例子中的一個錯誤,閱讀3,已經更新了這個問題! –
你在目標結果中顯示12:00,應該不是13:00? – Justin