Необязательное условие в WHERE

Рейтинг: 0Ответов: 1Опубликовано: 22.01.2023

Есть таблица 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 

Но это не сработало

Ответы

▲ 0Принят

В вашем примере используется 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