我有两张桌子:TraceJobs和TraceRoutes。表结构如下所示:
TraceJobs:
id title
-- -----
1 trace 1
2 trace 2
路由跟踪:
id tracejobs_id hopnumber url RTT
-- ------- ---------- -------- ---
1 1 1 xyz123.contoso.com 1
2 1 2 xyz124-2.contoso.com 5
3 1 3 abc124-1.contoso.com 7
4 1 4 abc124-1.contoso.com 10
5 1 5 abc124-1.google.com 15
6 1 6 abc1267-1.google.com 20
7 2 1 xyz123.contoso.com 1
8 2 2 xyz124-2.contoso.com 5
9 2 3 abc124-1.contoso.com 7
10 2 4 abc124-1.contoso.com 15
11 2 5 abc124-1.google.com 17
12 2 6 abc1267-1.google.com 20
TraceJobs表只跟踪我完成的所有traceroutes。 TraceRoutes表跟踪我完成的每个tracejobs中的traceroute。并且有一对多的关系。
我的目标是加入这些表格,以便我可以获得最高价值的RTT用于URL匹配" .contoso.com"。 这就是我想输出的样子......
tracejobs_id title url RTT
---------- ------------- -------------- -------------
1 trace 1 contoso.com 10
2 trace 2 contoso.com 15
知道如何用SQL语句完成这个任务吗?
谢谢!
答案 0 :(得分:5)
你能用GROUP BY汇总吗?
SELECT t2.tracejobs_id, t1.title, 'contoso.com' as url, max(t2.rtt)
FROM tracejobs t1
INNER JOIN traceRoutes t2 ON
t1.id = t2.tracejobs_id
WHERE url like '%contoso.com'
GROUP BY tracejobs_id, title
答案 1 :(得分:0)
你可以使用max a group by
select r.tracejobs_id, j.title, r.url, max(r.RTT)
from TraceJobs j
inner join TraceRoutes r on j.id = r.tracejobs_id
where r.url like ('%.contoso.com')
group by r.tracejobs_id, j.title, r.url
答案 2 :(得分:0)
这样的事情应该有效
SELECT tj.id AS 'tracejobs_id',
tj.title,
'contoso.com' AS url,
MAX(tr.RTT) AS 'RTT'
FROM TraceJobs tj JOIN TraceRoutes tr
ON tj.id = tr.tracejobs_id
WHERE tr.url LIKE '%contoso.com%'
GROUP BY tj.id, tj.title;