我有两个表 - 一个用于Jobs,另一个用于Connections。一份工作可以有很多联系。 Connetion的PK是connid +时间戳,它有一个指向Job的JOBID的外键(JOBID)。如何从多个表中查询数据和信息的范围SQL?
JOBID | NAME
-------+-------
id1 | Name of Job 1
id2 | Job 2's Name
CONNID | TIMESTAMP | JOBID | AMOUNT
-------+-------+--------+----------
012 | doesn't | id1 | 11
012 | matter | id1 | 15
012 | | id1 | 20
012 | | id1 | 30
020 | | id1 | 2
020 | | id1 | 5
549 | | id2 | 19
549 | | id2 | 30
549 | | id2 | 50
549 | | id2 | 57
549 | | id2 | 60
所以我想要做的是,从连接表中,获取每个作业的每个连接的范围的总和。所以对于job-id1我想(30-11)+(5-2)这是22和我想要的job-id2(60-19)这是41.现在我可以弄清楚如何做最大减去最小值每个连接...
SELECT
CONNID ,
MAX(AMOUNT) - MIN(AMOUNT) AS range
FROM Connection
GROUP BY CONNID
...但我不与SQL非常熟悉,找出更多我需要什么(如我在大学的单一数据库类年前了)。除此之外,我希望它按照工作名称排序,我相信我必须从Job表中获得一个完整的“复杂化层”。
基本上,我想要的结果集看起来像
NAME | range
--------------+------
Name of Job 1 | 22
Job 2's Name | 41
最后,我希望能够为仅过去24小时内做到这一点,但只应增加一个WHERE在那里应该是非常简单的条款。
我希望的答案将包含一个查询,只是一个JOBID连接表查询(所以不担心作业的名称为答案的第一部分),然后查询,我' m实际上是在寻找那个给了我上面的结果集,所以我可以明确地看到需要达到的额外步骤。
看起来我们发布了同样的答案,所以它必须是正确的;)只是抬起头,最终的分组他想通过JOBID而不是CONNID。所以你认为最后一个GROUP ON应该切换到'group by jobid'。 OP:如果你同意,那么你可以接受这个答案,因为他把它发布在我面前。 –
@EliGassert。 。 。问题的文字强烈表明答案应该以连接的方式。我确实承认样本结果是由工作提出的,但我会继续与之联系。 –
你确定吗? *所以对于工作id1我想(30-11)+(5-2)这是22和工作id2我想(60-19)这是41. *我读到,因为他想他的结果是在表单'jobid |时间' –