需要帮助/解释JOINED查询

问题描述:

我有点失去了什么样的SQL查询,我应该做些什么来实现我想要的。需要帮助/解释JOINED查询

比方说,我有三个表:

select * FROM trip; 

| trip_id | title | description 
---------------------------------- 
| 1  | title1 | desc1  | 
| 2  | title2 | desc2  | 
| 3  | title3 | desc3  | 
| 4  | title4 | desc4  | 
| 5  | title5 | desc5  | 
| 6  | title6 | desc6  | 

select * FROM weekly_report; 

| report_id | trip_id| incident_id 
---------------------------------- 
| 1   | 1  | (null)  | 
| 2   | 1  | (null)  | 
| 3   | 1  | 1   | 
| 4   | 2  | 2   | 
| 5   | 3  | 3   | 
| 6   | 3  | (null)  | 


select * FROM incident; 

| incident_id | error_code | 
---------------------------------- 
| 1   | 22223  | 
| 2   | 25456  | 
| 3   | 25456  | 

那么一点点operationnal知识:

  • 行程表中包含1个创纪录的完成由客户之旅。
  • weekly_report包含每周旅行的报告。 (2周的1次旅行将有2条记录,1次旅行或5周将有5次..)。
  • 事件表包含每个事件1条记录。 (如果事件一周期间发生了:我们在事件表中创建一个记录,否则我们什么都不做)

我想在一个查询中找到(或者如果它必须与子查询)在至少一周内出现过一次为error_code“25456”声明的事件的次数。

样本数据的预期结果:2(因为行程2和3存在错误代码25456的事件)。

我可以解释更多,如果需要的话,有没有人愿意帮助我?

感谢,

+1

mysql或oracle? – GurV

你需要采取的不同旅行相关的事件计数

select count(distinct w.trip_id) 
from weekly_report w 
inner join incident i 
on w.incident_id = i.incident_id 
where i.error_code = 25456; 
+0

似乎是这样做!我要研究内部连接来理解它!谢谢! – lilli

试试这个:

SELECT w.trip_id 
FROM incident i 
INNER JOIN weekly_report w ON i.incident_id=w.incident_id 
WHERE error_code='25456' 

,如果你想计数,然后

SELECT COUNT(w.trip_id) 
FROM incident i 
INNER JOIN weekly_report w ON i.incident_id=w.incident_id 
WHERE error_code='25456' 
+0

不能在不同的数据集上工作 – GurV

+0

@GurwinderSingh你能更清楚吗? –

+0

如果还有一次旅行2,你的答案会产生3而不是2 – GurV