我有四张桌子:
司机

(id, name)

车辆
(id, license_plate)

行程(点对点行程)
(id, vehicle_id, starting_datetime, ending_datetime)

司机工作时间
(id, driver_id, vehicle_id, starting_datetime, ending_datetime)

基本上,我必须根据itinerariesstarting_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`))

07-28 07:02