[英]SQL: find the earliest occurrence of a row in a table based of values from multiple tables
我意識到這個問題已經被問過很多次了,並且已經有一天多的時間我瀏覽了很多與此問題相關的帖子。 不幸的是,我一直無法解決我的特定問題,非常感謝大家提供的任何幫助。
我相信這是每周幾次在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
的T.id和U.id
的U.id來獲取所有票證的此信息時,查詢什么都不會返回。 我嘗試了許多不同的解決方案,包括通過別名本身連接TicketUpdate
表等。
請幫忙!
您需要在SELECT
和GROUP 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.