簡體   English   中英

SQL:根據多個表中的值查找表中行的最早出現

[英]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_iduser_id時,這種方法有效。 但是,當我用T.id的T.id和U.id的U.id來獲取所有票證的此信息時,查詢什么都不會返回。 我嘗試了許多不同的解決方案,包括通過別名本身連接TicketUpdate表等。

請幫忙!

您需要在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM