我有四张桌子:
司机
(id, name)
车辆
(id, license_plate)
行程(点对点行程)
(id, vehicle_id, starting_datetime, ending_datetime)
司机工作时间
(id, driver_id, vehicle_id, starting_datetime, ending_datetime)
基本上,我必须根据
itineraries
和starting_datetime
获取特定驱动程序的所有ending_datetime
。唯一的方法是对
foreach
结果执行driving_working_periods
循环,每次查询itineraries
表时,都会找到与datetime
间隔和vehicle_id
间隔匹配的表。我想知道在一个查询中是否有这样的方法,因为每个表中有1000多行,而且每周都会变大。
谢谢您。
最佳答案
SELECT *
FROM `itineraries` a
INNER JOIN `driver_working_periods` b
ON `a`.`vehicle_id` = `b`.`vehicle_id`
AND (TIMESTAMPDIFF(SECOND, `a`.`starting_datetime`, `a`.`ending_datetime`)) = (TIMESTAMPDIFF(SECOND, `b`.`starting_datetime`, `b`.`ending_datetime`))