MySQL Left Join таблица, где объединенная таблица может быть нулевой, но имеет условия где - PullRequest
0 голосов
/ 29 января 2019

Каков наилучший способ левого присоединения к таблице, в которой указаны конкретные условия, которые должны быть выполнены, но в то же время может быть и ноль?

Пример:

Select a.*, b.schedule
from Tablea a 
    left join Tableb b on a.subid = b.subid
WHERE 
    b.date > NOW()
    and b.active = 1

Возможно, что таблица B пуста, но если она не пуста, то должны отображаться только активные будущие расписания.

Ответы [ 3 ]

0 голосов
/ 29 января 2019

Вы должны добавить условие для левого столбца соединения в предложении ON, иначе работать как внутреннее соединение

    Select a.*, b.schedule
    from Tablea a 
    left join Tableb b on a.subid = b.subid AND  
        b.date > NOW()
        and b.active = 1
0 голосов
/ 29 января 2019

Только что проверил, и это сработало, я буду продолжать, если у кого-то еще есть лучшее решение, но это было то, что я придумал

Select a.*, b.schedule
from Tablea a 
    left join (select * from Tableb where date > NOW() and active = 1) b 
        on a.subid = b.subid
WHERE 
0 голосов
/ 29 января 2019

Вам просто нужно переместить условие в предложение ON в JOIN:

Select a.*, b.schedule
from Tablea a 
    left join Tableb b 
    ON a.subid = b.subid
    AND b.date > NOW()
    AND.active = 1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...