我意识到这个问题已被多次询问,并且我已经浏览了许多关于此问题的帖子,现在已经查看了一天。不幸的是,我一直无法解决我的具体问题,并将不胜感激任何人都可以提供的帮助。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