Tôi sẽ cố gắng trả lời chỉ bằng SQL.
Sử dụng group_concat riêng biệt,
select t.id,name,phone,
group_concat(distinct a.addr separator ',') as address,
group_concat(distinct c.cat separator ',') as category
from table1 t
left join address a
on t.id = a.refid
left join category c
on t.id = c.refid
group by t.id,name, phone
HOẶC
Như cột nội dòng,
select t.id,name,phone,
(select group_concat(a.addr separator ',')
from address a
where a.refid = t.id) as address,
(select group_concat(c.cat separator ',')
from category c
where c.refid = t.id) as category
from table1 t
Tham khảo Db <> fiddle