@novoselovmaks

Как в запросе произвести арифметические операции над значениями из разных LEFT JOIN?

Добрый день.

В одном запросе я делаю выборки из связанной таблицы через LEFT JOIN. Выбираю значения за разные даты, две даты = два LEFT JOIN.

Мне нужно получить разницу между двумя значениями из этих LEFT JOIN.

Сейчас запрос выглядит следующим образом
SELECT `query`.* FROM `query` 
LEFT JOIN `query_position` `pos_from` ON (`query`.`query_id` = `pos_from`.`query_id`) AND (DATE_FORMAT(`pos_from`.`created_at`, '%d-%m-%Y') = '07-06-2017') 
LEFT JOIN `query_position` `pos_to` ON (`query`.`query_id` = `pos_to`.`query_id`) AND (DATE_FORMAT(`pos_to`.`created_at`, '%d-%m-%Y') = '10-06-2017') 
GROUP BY `query`.`query_id`


Как средствами Mysql получить разницу между `pos_from` и `pos_to`?
необходимо сделать именyо через MySQL т.к потом потребуется сортировка по этому параметру.
  • Вопрос задан
  • 376 просмотров
Решения вопроса 1
kimono
@kimono
Web developer
А так разве не пойдет:
SELECT `query`.*, (`pos_from`.`created_at` - `pos_to`.`created_at`) `pos_result_date`, FROM `query` 
LEFT JOIN `query_position` `pos_from` ON (`query`.`query_id` = `pos_from`.`query_id`) AND (DATE_FORMAT(`pos_from`.`created_at`, '%d-%m-%Y') = '07-06-2017')
LEFT JOIN `query_position` `pos_to` ON (`query`.`query_id` = `pos_to`.`query_id`) AND (DATE_FORMAT(`pos_to`.`created_at`, '%d-%m-%Y') = '10-06-2017')
GROUP BY `query`.`query_id`
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы