GARANTIR DESCONTO

Fórum Dificuldade com select de uninndo 3 tabelas #574004

19/01/2017

0

Bom dia pessoal, desculpem-me se estiver fazendo algo errado, sou fuçador e novo no forúm.
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

Paulo Wesley

Responder

Posts

19/01/2017

Douglas Noronha

Se traz registros um com PIS e outro com COFINS, não são registros duplicados.
Não deu para entender como é o retorno esperado.
Responder

Gostei + 0

20/01/2017

Paulo Wesley

Bom dia Douglas, tudo bem?
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.
Responder

Gostei + 0

22/01/2017

Mercia

Paulo,

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
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar