Fórum Dificuldade com select de uninndo 3 tabelas #574004
19/01/2017
0
Andei procurando em muitos forúns e também aqui no DevMedia, mas não encontrei a solução.
Preciso fazer um select de informações de 2 tabelas (Produto e Impostos Federais), para ligar as duas tabelas eu preciso passar por outra tabela (Impostos Federais Produto), os impostos federais são dois PIS E COFINS então os códigos de produtos se repetem 1x, nessa tabela que liga as duas informações tenho:
Tabela Impostos_Federais_Produto
IMPFEDSIM PROCOD
01 000003
01 000004
02 000005
02 000006
02 000007
03 000003
03 000004
04 000005
04 000006
04 000007
Na Tabela Produto tenho o campo IMPFEDSIM e PROCOD;
Na Tabela de Impostos_Federais tenho IMPFEDSIM e gostaria de recuperar os campos de IMPFEDALIQ, IMPFEDALIQSAI, IMPFEDST e IMPFEDSTSAI.
Com Inner Join eu consigo as informações, mas com registros duplicados por existir essas duas ligações uma para PIS e outra para COFINS, desculpem-me a ilustração desajeitada que fiz. Estou desde sexta-feira passada quebrando a cabeça com isso, consegui puxar os nomes dos grupos, trabalhar os impostos ICMS, mas não sei o que fazer com essa situação.
Alguém pode me ajudar por favor?
Paulo Wesley
Curtir tópico
+ 0Posts
19/01/2017
Douglas Noronha
Não deu para entender como é o retorno esperado.
Gostei + 0
20/01/2017
Paulo Wesley
Só para exemplo, o retorno esperado é:
COD DESC COD_PIS_COMPRA ALIQ_PIS_COMPRA COD_PIS_VENDA ALIQ_PIS_COMPRA COD_COFINS_VENDA ALIQ_COFINS_COMPRA COD_COFINS_COMPRA ALIQ_COFINS_COMPRA
1 SELF SERVICE 01 3.00 73 3.00 02 0.65 71 0.65
2 PETISCO KG 04 0.00 50 0.00 05 0.00 49 0.00
3 CHOPP 300ML 03 0.00 51 0.00 05 0.00 49 0.00
Mas me retorna:
1 SELF SERVICE 01 3.00 73 3.00
1 SELF SERVICE 02 0.65 71 0.65
2 PETISCO KG 04 0.00 50 0.00
2 PETISCO KG 05 0.00 49 0.00
o meu código atual é esse:
select
cast(produto.procod as integer) as codigo,
produto.prodes as descricao,
produto.prounid as unidade,
secao.secdes as grupo,
produto.proprc1 as venda,
0 as OST,
case produto.trbid
when 'F00' then '60'
when 'I00' then '40'
when 'N00' then '41'
when 'T06' then '00'
when 'T18' then '00'
end as ST,
case produto.trbid
when 'F00' then 'F'
when 'I00' then 'I'
when 'N00' then 'N'
when 'T06' then '3.20'
when 'T18' then '18.00'
end as ELO,
produto.proncm as NCM,
produto.procest as CEST
from produto
inner join secao on (secao.seccod = produto.seccod)
inner join impostos_federais_produto on (impostos_federais_produto.procod = produto.procod)
inner join impostos_federais on (impostos_federais_produto.impfedsim = impostos_federais.impfedsim)
order by codigo
Se acrescento no inner join impostos_federais um and impostos_federais.impfedtip = 'C' ou P eu consigo 1 só das imformações, tentei com subselects mas me retorna aquele erro multiple rows in singleton select.
Desde já muito obrigado pela ajuda.
Gostei + 0
22/01/2017
Mercia
Na select que vc postou não há como fazer com que apareça todos os 10 esperados, tendo em vista, que vc só esta pedindo apenas a exibição de 8 campos...
Precisaria uma outra estrutura de SELECT
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)