[RESOLVIDO][MySql] Listagem de tabelas diferentes

serj_tankian

Power Member
Boa noite pessoal,

Precisava de um empurrão para desenvolver uma query!
As tabelas em questão encontram-se nesta imagem
https://drive.google.com/open?id=0B667BsLViW2sNG9rQk5VWHF5TjQ

Vou dar o exemplo do que pretendo,
-o produto(ppc_produto) X tem a peça(ppc_peca) A,B,C e a composta D(ppc_composta) e respectivas quantidades de cada uma (suponhamos que todas tem 1 como quantidade) ppc_quantidade.
-Por sua vez a composta D (pc_composta) tem as pecas B e E(pc_pecas) e respectivas quantidades de cada uma (suponhamos que todas tem 1 como quantidade)

O meu objectivo é que me liste as peças de um determinado ppc_produto da seguinte forma

Produto X
Peça Quantidade
A 1
B 2
C 1
E 1

O resultado ignora a peça composta mas imprime as peças que o compõem na mesma e soma as quantidades de cada um.

Estou encravado nesta situação, lista me todas as peças, mas se houver repetidas não as junta, e as peças que vêm da tabela pc tem a referencia como null...

Obrigado pela vossa ajuda
 
tenho a no meu pc fixo, segunda coloco a aqui ;)
Mas por alto está assim:
Select * from (select 'o que quero' from ppc left join peca on ppc_pecas=idpecas Union all select pc_pecas, sum(quantidade) from pc left join peca on pc_pecas=idpecas) t group by referencia

Na minha query pretendia algumas coisas mais especificas mas por alto foi esta a lógica utilizada..

As minhas tabelas tambem já não estão assim, mas segunda coloco tudo direito para se perceber :)
 
Nada, a query final é esta, neste caso está a retornar todas as peças do produto com id 5.
As tabelas sofreram alterações nos nomes dos campos, mas penso que a ideia dá para perceber, se quiseres posso colocar aqui as 3 tableas tambem ;)

SELECT referencia, imagem, descricao, sum(quantidade) as quantidade, fornecedor, unidades
from (
select peca.p_ref as referencia, peca.p_img as imagem, peca.p_descricaopt as descricao, ppc_qtd as quantidade, fornecedor.f_nome as fornecedor, peca.p_unidades as unidades
FROM ppc left join peca on ppc_pecas=peca.idpecas left join fornecedor on fornecedor.idfornecedor=peca.fk_fornecedor
where ppc_pecas is not null and ppc_produto=5
group by p_ref,idpecas
UNION ALL
select p_ref as referencia, peca.p_img as imagem, peca.p_descricaopt as descricao, sum(pc_quantidade*ppc_qtd) as quantidade, fornecedor.f_nome as fornecedor , peca.p_unidades as unidades
from pc left join peca on pc_pecas=idpecas left join ppc on pc_composta=ppc_composta left join fornecedor on fornecedor.idfornecedor=peca.fk_fornecedor
where ppc_produto=5
group by idpecas) t

group by referencia
order by fornecedor, referencia
 
Bem visto essa solução..
Dificilmente chegava a essa solução hhaha
Raramente uso o union e como atualmente uso tudo em objetos, praticamente não tenho querys complexas.. (em vez disso faz varias 'mini querys' e junta tudo no array final)
 
Estava a dar em doido, no sql server um full join resolvia me o problema mais facilmente eheeh
Já agora partilho para quem quiser, criei um sistema que a pessoa carrega num botão e processa a query e imprime em pdf, utilizei o html2pdf. Apesar de testar o fpdf, o html2pdf pega no nosso html/css e "espelha" para pdf, o que me permitiu perder pouco tempo nesse assunto ;)
 
Back
Topo