2010-04-05 2 views
1

Чтобы объяснить, например, взять две таблицы А и ВMySQL - Регистрация в качестве нуля, если запись не находится в

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; 

житницы результат

foo bar 
z 50 
x 100 

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

foo bar 
z 50 
y  0 
x 100 

Мое предположение было что-то вдоль линий

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

Возможно?

ответ

5
SELECT a.foo, COALESCE(b.bar, 0) as bar 
FROM a 
LEFT OUTER JOIN b ON a.id = b.aid 
+0

Отлично. Я действительно передумал. –

2
SELECT a.foo, IFNULL(b.bar, 0) AS bar 
FROM tablea AS a 
LEFT JOIN tableb AS b 
    ON a.id=b.aid 
Смежные вопросы