A
A
Andrey Veryaskin2016-10-13 17:23:33
MySQL
Andrey Veryaskin, 2016-10-13 17:23:33

Why doesn't query with subquery work in mysql 5.7?

Unable to execute such query in mysql 5.7

SELECT
  routes.id_zadakur taskId,
  sum(BS_TIME_DIFF(routes.arrival,routes.departure)) wait,
  sum(BS_TIME_DIFF((SELECT r2.departure FROM routes r2 WHERE routes.series = r2.series + 1 AND r2.id_zadakur = taskId),routes.arrival)) active
FROM routes
GROUP BY routes.id_zadakur

gives such an error
[42S22][1054] Unknown column 'taskId' in 'where clause'

At the same time, in mysql5.5, queries are executed perfectly. What is the difference, how can the query be rewritten to work on 5.7 as well?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
C
Cat Anton, 2016-10-13
@veryaskinan

SELECT
    r.id_zadakur taskId,
    sum(BS_TIME_DIFF(r.arrival, r.departure)) wait,
    sum(BS_TIME_DIFF((
        SELECT r2.departure FROM routes r2 
        WHERE r.series = r2.series + 1 AND r2.id_zadakur = r.id_zadakur
    ), r.arrival)) active
FROM routes r
GROUP BY routes.id_zadakur

R
Rsa97, 2016-10-13
@Rsa97

SELECT `r`.`id_zadakur` AS `taskId`,
       sum(BS_TIME_DIFF(`r`.`arrival`, `r`.`departure`)) AS `wait`,
       sum(BS_TIME_DIFF(IFNULL(`r2`.`departure`, `r`.`arrival`), `r`.`arrival`)) AS `active`
  FROM `routes` AS `r`
  LEFT JOIN `routes` AS `r2` ON `r2`.`id_zadakur` = `r`.`id_zadakur` AND `r2`.`series` = `r`.`series`-1 
  GROUP BY `r`.`id_zadakur`

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question