Необязательное условие в WHERE
Есть таблица task
ID TaskName
Колонка ID связана с другой таблицей - users
ID TaskID UserName UserID
запись в таблице users может быть а может не быть.
Я хочу вывести task по его ID + UserID (если он есть).
Пробую сделать так SELECT task.ID, users.UserName FROM task JOIN users WHERE users.UserID = 1 AND task.ID=4
Если пользователь есть - оно выводит нужную запись. Если нет, ответ не содержит записи.
Пытаюсь сделать, что бы ответ был в любом случае (есть пользователь или нет). Если пользователя нет то вывести в колонке users.UserName NULL или 0.
Пробовал делать OR
WHERE (users.UserID = 1 AND task.ID=4) OR task.ID=4
Но это не сработало
Ответы (1 шт):
В вашем примере используется JOIN или говоря INNER JOIN. При данном соединении таблиц исключаются все записи, несвязанные по ключу task.ID - users.TaskID. И в результате, в поле users.UserName не будут выводится значения с NULL.
Для решения данной задачки попробуйте использовать LEFT JOIN:
SELECT
t.Id,
u.UserName
FROM
task t
LEFT JOIN users u ON u.TaskId = t.Id
WHERE
t.Id = 4