我意识到这个问题已被多次询问,而且我已经查看了很多关于这个问题的帖子,现在已经有一天多了。不幸的是,我一直无法解决我的具体问题,非常感谢你们所提供的任何帮助。
我认为这是每周多次在StackOverflow上出现的“每组最大”问题的变体。
正在针对工作票据的数据库运行查询。我需要的数据分布在许多表格中,我正在将它整合到一个区域中进行处理。在此特定实例中,更新表包含特定工作票证的多个行。我正在尝试将其加入票证表,并且只获取该票证的最早更新日期,其中用户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
表,等等。
请帮助!
答案 0 :(得分:0)
您需要在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