2012-03-05 75 views
1

我意識到這個問題已被多次詢問,並且我已經瀏覽了許多關於此問題的帖子,現在已經查看了一天。不幸的是,我一直無法解決我的具體問題,並將不勝感激任何人都可以提供的幫助。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_iduser_id特定行像上面。但是,當我用T.id代替923479283和U.id代替7986003以獲取所有票據的此信息時,查詢將不返回任何內容。我已經嘗試了很多不同的解決方案,包括通過別名加入TicketUpdate表格本身等等。

請幫助!

+1

** **什麼數據庫系統,以及哪個版本? ** SQL **只是結構化查詢語言(Structured Query Language) - 許多數據庫系統使用的語言 - SQL是** NOT **數據庫產品......類似這樣的東西通常是供應商特定的 - 所以我們真的需要知道什麼您正在使用的數據庫系統.... – 2012-03-05 20:13:40

+0

這是微軟SMS 2008 – user1250570 2012-03-05 20:16:51

+0

因此,您發佈的代碼示例是_does_正確運行的代碼示例,但還有另外一個非硬編碼示例不會運行。是對的嗎?如果是這樣,你能準確地發佈錯誤代碼嗎? – 2012-03-05 20:20:05

回答

0

您需要添加您SELECTGROUP BY那些列:

select TA.task_id, TA.user_id, 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 
GROUP BY TA.task_id, TA.user_id 
+0

謝謝,我相信這個工作,但是我以前試過,並沒有按我的要求工作。希望這不是一個語法錯誤 – user1250570 2012-03-05 20:30:46

+0

這個解決方案是正確的我發佈的情況。然而,我試圖避免發佈更大的實際查詢出於安全原因,並且當我將更改應用到更大的查詢時,解決方案抓住每個記錄主要由於大型查詢的結構,我道歉但我不認爲我允許發佈完整查詢,公司政策和所有信息。我會將此標記爲正確的,希望我們可以繼續討論這個問題。 – user1250570 2012-03-05 20:39:45

+0

較大的查詢包含一些左外連接到其他表可能導致所有記錄顯示。 – user1250570 2012-03-05 20:42:00

相關問題