quando voce faz uma consulta usando duas ou mais tabelas, se voce nao especificar quais campos de uma sao iguais aos campos da outra (inner join ou left join), voce obtem um total de registros igual ao total de uma tabela multiplicado pelo total da outra, se tiver uma terceira ou quarta tabela a coisa fica pior. Já que voce precisa de dados de tabelas diferentes, faça o relacionamento correto entre as tabelas. Dá uma olhada no exemplo:
tab_produto:
pro_id, pro_cod, pro_cor
1 A0012 1
2 A0405 1
tab_cores
cor_id, cor_nome
1 verde
2 azul
<< só tem produto de cor verde >>
select * from tab_produto, tab_cores
pro_id, pro_cod, cor_id, cor_nome
1 A0012 1 verde
1 A0012 2 azul
2 A0405 1 verde
2 A0405 2 azul
<< o correto seria assim >>
select * from tab_produto inner join tab_cores on tab_produto.pro_cor = tab_cores.cor_id
pro_id, pro_cod, cor_id, cor_nome
1 A0012 1 verde
2 A0405 1 verde