SQL小提琴:
http://sqlfiddle.com/#!2/b46ea/2
当前的SQL:
SELECT `vehicle_journey`.*,
ADDTIME(departure, SEC_TO_TIME((1))) AS stopDepartureTime
FROM `vehicle_journey`
INNER JOIN `vehicle_journey_days`
ON `vehicle_journey_days`.`journey_reference` = `vehicle_journey`.`reference`
INNER JOIN `journey_pattern`
ON `journey_pattern`.`reference` = `vehicle_journey`.`journey_pattern_reference`
INNER JOIN `journey_pattern_timing_link`
ON `journey_pattern_timing_link`.`section` = `journey_pattern`.`journey_pattern_section`
WHERE `journey_pattern_timing_link`.`stop` = '1900HA030193'
AND `vehicle_journey_days`.`day` = 'MondayToFriday'
此SQL语句的最终目的是根据其在vehicle_journey中的出发时间和journey_pattern_timing_link中的run_time获取总线的到达时间.
这是证明困难的原因以及我寻求帮助的原因是因为journey_pattern_timing_link表的性质.该表被设置为提供从一个停止到下一个停止所需的时间(这是时间相对于每个启程时间).
正如您将在select语句中看到的那样,我离它不远. “ADDTIME”功能是计算公交车站出发时间的地方.但是,您会在值中看到“1”以添加到出发时间.这只是一个占位符,基本上它在SEC_TO_TIME函数内部,我需要加起来并计算出发时间.
但是等等,我们加起来了什么?这就是我对journey_pattern_timing_link表的本质的意思.我需要做的是获取journey_pattern_timing_link表中所有run_time字段的总和,其中ID小于where语句中所选停靠点的ID,并且journey_pattern_timing_link.section等于基于连接的那个.
我知道这是一个非常长的问题,需要经过深思熟虑,但我很好并且真正陷入困境.查看SQL Fiddle的模式浏览器应该有助于理解表结构.