SELECT SEC_TO_TIME(SUM(customJoin.time))
FROM journey
JOIN journey_code ON journey_code.journey = journey.id
JOIN journey_day ON journey_day.journey = journey.id
JOIN pattern ON pattern.id = journey.pattern
JOIN (
SELECT SEC_TO_TIME(SUM(time)) AS time
FROM pattern_link
WHERE /* how can I tell MySQL to use the ON pattern.section value here? */
) customJoin ON pattern_link.section = pattern.section
JOIN service ON service.id = journey.service AND NOW() BETWEEN service.date_start AND service.date_end
JOIN `line` ON line.service = service.id
JOIN operator ON operator.id = service.operator
WHERE journey_code.code = '2108'
AND operator.code = "BLV"
AND `line`.name = "X4"
AND journey_day.day = 1
LIMIT 1
上述SQL的目的是根据模式部分的JOIN
值(在SQL查询的正上方)选择总时间。
我似乎无法实现这一目标。我需要将ON
子句值传递到WHERE
内的JOIN
子句。
我该怎么做?
答案 0 :(得分:2)
如果我理解正确,你可以使用聚合:
JOIN (
SELECT pattern_link.section, SEC_TO_TIME(SUM(time)) AS time
FROM pattern_link
GROUP BY pattern_link.section
) pl ON pl.section = pattern.section