@maks280795

Как выводить NULL значения для строк которые не попадают под условия?

Добрый день, у меня идет выборка из таблицы info, к ней LEFT JOIN'ом присоединяется таблица conditions, далее в секции WHERE стоит условие, что из conditions нужно выбрать строку с максимальным значением поля date_from, при условии, что info.date_registration > conditions.date_from.
Т.е. запрос выглядит примерно так:
SELECT * FROM `info`
LEFT JOIN `conditions` ON `info`.`plan_id` = `conditions`.`plan_id`
WHERE `conditions`.`date_from` IN (
    SELECT MAX(`c1`.`date_from`)
    FROM `conditions` `c1`
    WHERE  `info`.`date_registration` > `c1`.`date_from`
)


Вопрос, как мне выводить все строки из info подставляя NULL значения, когда условие date_registration > conditions.date_from ложно?
  • Вопрос задан
  • 608 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
Так вынеси условие из "where" в "on" секцию join
LEFT JOIN `conditions` ON `info`.`plan_id` = `conditions`.`plan_id` and
 `conditions`.`date_from` IN (
    SELECT MAX(`c1`.`date_from`)
    FROM `conditions` `c1`
    WHERE  `info`.`date_registration` > `c1`.`date_from`
)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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