Only works on MySql 4(where UNION is implemented):
(select a.name,b.name from cat a, userlist b where a.uid=b.uid) union (select c.name,d.name from subcat c, userlist d where c.uid=d.uid);
That's the closest I can get. I didn't find any info on how to add the cat and subcat to the result. I will be looking forward to know the answer.
if you want to try you real data:
create table userlist (uid int, name varchar(10));
create table cat (catid int, uid int, name varchar(10));
create table subcat (sid int,catid int, uid int, name varchar(10));
insert into userlist values(1,'Hans');
insert into userlist values(2,'Punk');
insert into userlist values(3,'Mary');
insert into userlist values(4,'Rocky');
insert into cat values(1,2,'Life Style');
insert into cat values(2,2,'Expression');
insert into cat values(3,1,'Opinion');
insert into subcat values(1,2,4,'Poem');
insert into subcat values(2,2,3,'Diaries');
insert into subcat values(3,1,1,'Fashion');
insert into subcat values(4,1,1,'Music');