Relacionamento de 1 para muitos

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
afonsonogueira
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 05 Nov 2007 12:14 pm
Localização: Manaus/AM
Afonso Nogueira

Prezados,
Tenho a seguinte situação:

Selecionar tudo

Tabela A - Cabeçalho de Notas:
Campo: Nota_Fiscal

Tabela B - Itens das Notas:
Campos: Nota_Fiscal, Item_Nota_Fiscal,Valor_Item

Tabela C - Tributação dos Itens das Notas:
Campos:Nota_fiscal, Item_Nota_Fiscal, Tributo, Aliquota,Valor_tributo
Quero executar um SELECT que me retorne as seguintes informações:

Selecionar tudo

Nota_fiscal, Vlr_TNF, Vlr_TTrib, Aliquota
e estou executando o seguinte SELECT:

Selecionar tudo

SELECT A.NOTA_FISCAL, SUM(B.VALOR_ITEM) VLR_TNF, SUM(C.VALOR_TRIBUTO) VLR_TTRIB, C.ALIQUOTA FROM NOTA_FISCAL A, ITENS_NF B, TRIBUTO_NF C WHERE A.NOTA_FISCAL = B.NOTA_FISCAL AND A.NOTA_FISCAL = C.NOTA_FISCAL
O problema:

A tabela de tributos possue dois ou mais tributos para cada item da nota (ISS, INSS, IR por exemplo), e o SELECT acima retorna o total da nota, duplicado, triplicado ou quadriplicado dependendo da quantidade de tributos em cada item.

Toda ajuda será bem vinda.
Obrigado.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Você quer um valor de TRIBUTO, totalizado por item?
Vamos supor que o item 01 tenha 03 tributos, soma-se os três e retorna para este item?
afonsonogueira
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 05 Nov 2007 12:14 pm
Localização: Manaus/AM
Afonso Nogueira

sim, mas, dos tributos que atendam a uma codição.
Por exemplo tabela de tributos:

Selecionar tudo

Nota      Item     Tributo  VL.tributo
00001    01         ISS       10,00
00001    01         IR           7,5
00001    02         ISS       12,00
00001    02         IR           6,75
O select tem que retornar, o total da nota, e o total dos tributos ISS
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

E ai Afonso, beleza??

cara, segue ai o select q faz isso q você precisa, a unica coisa q você vai ter q fazer é acertar o nome de alguns campos.. existe outras formas de montar esse tipo de select, talves esse aqui não seja o q tenha a melhor performance, pois isso tb depende de como esta os indices dessas tabelas.. mas já te serve pra ter uma ideia..

Selecionar tudo

SELECT A.NOTA_FISCAL,
       B.COD_ITEM,
       (SELECT SUM(VLR_ITEM) 
          FROM ITENS_NF D 
         WHERE A.NOTA_FISCAL = D.NOTA_FISCAL) VLR_TNF,
       SUM(C.VALOR_TRIBUTO) TOT_TTRIB, 
       C.ALIQUOTA 
  FROM NOTA_FISCAL A, 
       ITENS_NF    B, 
       TRIBUTO_NF  C 
 WHERE A.NOTA_FISCAL = B.NOTA_FISCAL 
   AND A.NOTA_FISCAL = C.NOTA_FISCAL 
   AND B.COD_ITEM = C.COD_ITEM
 GROUP BY A.NOTA_FISCAL, B.COD_ITEM, C.ALIQUOTA 
se não der certo por favor avise..
beleza?

[]'s
afonsonogueira
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 4
Registrado em: Seg, 05 Nov 2007 12:14 pm
Localização: Manaus/AM
Afonso Nogueira

Tineks,

Era isso mesmo que eu queria, muito obrigado pela ajuda.

Abraços, e obrigado
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Opa!!

de nada.!! :D

[]'s
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes