需要帮助/解释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的事件)。
我可以解释更多,如果需要的话,有没有人愿意帮助我?
感谢,
答
你需要采取的不同旅行相关的事件计数
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'
mysql或oracle? – GurV