MySQL - присоединиться как ноль, если запись не IN - PullRequest
1 голос
/ 05 апреля 2010

Для объяснения на примере возьмем две таблицы, A и B

Table A
id  foo
 1   x
 2   y
 3   z


Table B
id  aid bar
 1   3   50
 2   1  100

Пример соединения

SELECT foo, bar FROM a, b WHERE a.id = b.aid;

Garners результат

foo  bar
 z    50
 x   100

Я хотел бы получить все значения foo и для всех случаев, когда нет соответствующего значения bar, вернуть 0 для этого столбца.

foo  bar
 z    50
 y     0
 x   100

Моим лучшим предположением было что-то вроде

SELECT foo, bar AS br FROM a, b 
WHERE a.id = b.aid 
OR a.id NOT IN (SELECT aid FROM b);

Но это возвращает дубликаты и ненулевые значения для бара.

возможно?

Ответы [ 2 ]

5 голосов
/ 05 апреля 2010
SELECT a.foo, COALESCE(b.bar, 0) as bar
FROM a
LEFT OUTER JOIN b ON a.id = b.aid
2 голосов
/ 05 апреля 2010
SELECT a.foo, IFNULL(b.bar, 0) AS bar
FROM tablea AS a
LEFT JOIN tableb AS b
  ON a.id=b.aid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...