WHERE on JOINed table - применяется, только если строки найдены (объединены) - PullRequest
0 голосов
/ 04 августа 2020

Мой запрос:

SELECT
    T1.* 
FROM
    table1 T1
    LEFT JOIN table2 T2 ON T2.fk = T1.id
WHERE
    T2.active = 1

Не все строки из table1 можно объединить с table2. Для тех, кто может, следует установить ограничение T2.active=1.

Вопрос :

Как я могу исправить этот запрос для случая, когда в table2, но я бы все равно получил строку от table1 (вроде, IF EXISTS, then T2.active=1)

Спасибо!

1 Ответ

2 голосов
/ 04 августа 2020

Условие для второй таблицы должно быть в предложении on:

SELECT T1.* 
FROM table1 T1 LEFT JOIN 
     table2 T2
     ON T2.fk = T1.id AND T2.active = 1;

Обратите внимание, что если вы просто выбираете столбцы из table1, это не особенно важно. Я предполагаю, что ваш SELECT действительно имеет столбцы из обеих таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...