Ajuda no select

Pessoal sou iniciante e to ficando sem cabelos devido a select abaixo e preciso de ajuda…montei ele certinho mas o resultado não consigo fazer o que preciso.

SELECT cat, id, nome, (

SELECT SUM( valor )
FROM lc_movimento a
WHERE tipo =1
AND a.cat = b.cat
)tipo_1, (

SELECT SUM( valor )
FROM lc_movimento a
WHERE tipo =2
AND a.cat = b.cat
)tipo_2, (

SELECT SUM( valor )
FROM lc_movimento a
WHERE tipo =0
AND a.cat = b.cat
)tipo_0, (

SELECT SUM( tipo_1 - tipo_2 - tipo_0 )
)TOTAL
FROM (

SELECT DISTINCT x.cat, y.id, z.nome
FROM lc_movimento x, lc_cat y, lc_cat z
WHERE y.id = x.cat
GROUP BY x.cat ASC
)b

O resulta é:

cat id nome tipo_1 tipo_2 tipo_0 TOTAL
1 1 Teste1 NULL 1010 111 NULL
2 2 Teste1 NULL 15 4 NULL
3 3 Teste1 NULL NULL 3 NULL

Na tabela movimento quando incluo um item ele grava o ID do produto que ele pega na tabela cat até ai tudo bem…só que no relatorio eu preciso que ele pegue o ID do produto ache ele na tabela cad e pegue o nome dele.

O que preciso seria isso:

cat id nome tipo_1 tipo_2 tipo_0 TOTAL
1 1 Teste1 NULL 1010 111 NULL
2 2 Teste2 NULL 15 4 NULL
3 3 Teste3 NULL NULL 3 NULL

Se alguém puder me ajudar ficaria muito grato pois estou quase sem cabelos.

SELECT DISTINCT x.cat, y.id, z.nome FROM lc_movimento x, lc_cat y, lc_cat z
Estás a cruzar duas vezes com a lc_cat, uma delas desnecessária e sem condições no where…

SELECT DISTINCT x.cat, y.id, y.nome FROM lc_movimento x, lc_cat y

Obrigado, funcionou direitinho