带有自定义ON子句的MySQL JOIN子查询

时间:2014-07-14 20:30:05

标签: mysql sql

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子句。

我该怎么做?

1 个答案:

答案 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