我意識到這個問題已被多次詢問,並且我已經瀏覽了許多關於此問題的帖子,現在已經查看了一天。不幸的是,我一直無法解決我的具體問題,並將不勝感激任何人都可以提供的幫助。SQL:根據多個表中的值查找表中行的最早發生
我相信這是每週數次出現在StackOverflow上的「每組最大n」組問題的變體。
該查詢正在針對工作票據的數據庫運行。我需要的數據分佈在許多表格中,我將它們合併到一個單獨的區域中進行處理。在此特定實例中,更新表包含特定工單的多行。我試圖將它加入到票據表中,並且只抓取該票證的最早更新日期,其中用戶ID與用戶表中與票證關聯的用戶匹配。基本上我在user_id
更改以確定何時將票分配給特定用戶時正在使用。
UPDATE_TABLE
updateNumber | user_id | date | ticket_number
11 | 4586b03 | 2011-11-30 | 923479283
12 | 6786t03 | 2011-11-30 | 923479283
13 | 7986003 | 2011-12-02 | 923479283
14 | 7986003 | 2011-12-03 | 923479283
15 | 7986003 | 2011-12-04 | 923479283
16 | 5838397 | 2011-10-02 | 391983247
17 | 7986004 | 2012-01-03 | 663738223
18 | 7986003 | 2011-08-04 | 391983247
查詢:
select
min(TA.updated_at) as UpdateVal
from Tickets T
inner join Users U on U.id = T.assigned_user_id
inner join UserGroup AU on U.login = AU.[User]
inner join TicketUpdate TA on TA.task_id = T.id
where
TA.task_id = 923479283 and TA.user_id = 7986003
回報:2011-12-02
,這個方法工作時,我硬編碼task_id
和user_id
特定行像上面。但是,當我用T.id
代替923479283和U.id
代替7986003以獲取所有票據的此信息時,查詢將不返回任何內容。我已經嘗試了很多不同的解決方案,包括通過別名加入TicketUpdate
表格本身等等。
請幫助!
** **什麼數據庫系統,以及哪個版本? ** SQL **只是結構化查詢語言(Structured Query Language) - 許多數據庫系統使用的語言 - SQL是** NOT **數據庫產品......類似這樣的東西通常是供應商特定的 - 所以我們真的需要知道什麼您正在使用的數據庫系統.... – 2012-03-05 20:13:40
這是微軟SMS 2008 – user1250570 2012-03-05 20:16:51
因此,您發佈的代碼示例是_does_正確運行的代碼示例,但還有另外一個非硬編碼示例不會運行。是對的嗎?如果是這樣,你能準確地發佈錯誤代碼嗎? – 2012-03-05 20:20:05