left join возвращает ноль, даже если строк нет - PullRequest
7 голосов
/ 14 сентября 2010

Мои таблицы:

Таблица cat имеет id, name

Таблица user имеет id, uname, catid

Пример данных:
catтаблица

1 | Cate one
2 | cate two

таблица пользователя

1 | sam | 1
2 | dam | 0

мой запрос

SELECT cat.id, cat.name 
FROM cat LEFT JOIN user 
  ON cat.id = user.catid
WHERE user.id = 2

Поскольку категории с * 1025 нет* 0 Я получаю ноль строк.
Если нет строк, которые я хочу получить NULL или нули в результате.

Как мне это сделать?

Ответы [ 2 ]

11 голосов
/ 14 сентября 2010

Вам нужно либо превратить свое левое соединение в правое, либо поменять местами столы:

SELECT cat.id, cat.name
  FROM user LEFT JOIN cat ON cat.id = user.catid
 WHERE user.id = 2

С данными вашего примера это даст вам строку, содержащую нули в результате.

6 голосов
/ 14 сентября 2010

Измените LEFT JOIN на RIGHT JOIN ..., который должен вытягивать все из таблицы пользователей и все из таблицы категорий, если она доступна.

...