ляв съединявам проблем с mysql - php, mysql, sql

Имам две таблици и се опитвам да се присъединя към двете, базирани на първичен и чуждестранен ключ. Но проблемът е, че във втората таблица чуждият ключ има няколко дублиращи се реда.

Структура: -

1 Таблица - категория

catid   catname
1       AAA
2       BBB
3       CCC

2 Таблица - отговори

ansid    catid     userid
1        1         9
2        1         9
3        2         9
4        2         6

Резултатът трябва да бъде

userid    catid   catname   present in answers table
null       1         AAA       no
6          2         BBB       yes
null       3         CCC       no

Моята заявка е

    SELECT a.userid, c.catid,c.catname,
case when sum(a.catid is not null) > 0
then "yes" else "no" end as present_in_answers_table
from answers a left join
category c  on c.catid = a.catid
where  (a.userid = 6) group by c.catid

Но това не връща резултатите, които искам. Връща само един ред, който е

userid    catid   catname   present in answers table
6          2         BBB       yes

Отговори:

3 за отговор № 1

Мисля, че трябва да промените реда на присъединяване, така че да запазите всичко в category маса и след това преместете where условие към on клауза:

SELECT a.userid, c.catid, c.catname,
(case when count(a.catid) > 0 then "yes" else "no"
end) as present_in_answers_table
from category c left join
answers a
on c.catid = a.catid and
a.userid = 6
group by c.catid;

Обърнете внимание, че също промених sum() до a count() -- count() автоматично брои колко пъти аргументът не е NULL.