需要帮助/解释JOINED查询

时间:2016-12-26 11:28:46

标签: mysql sql oracle oracle-sqldeveloper

我有点失去了我应该做什么样的SQL查询来实现我想要的目标。

我们说我有三张桌子:

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      | 

所以对于一点操作知识:

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

我想在单个查询中找到(或者如果必须是子查询),那么在至少一周内发生了为error_code声明的事件的旅行次数" 25456& #34;

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

如果需要,我可以解释更多,是否有人愿意帮助我?

谢谢,

2 个答案:

答案 0 :(得分:0)

试试这个:

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'

答案 1 :(得分:0)

您需要为相关事件计算不同的行程

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;