Somando Campo - Trigger

21/10/2013

0

Bom dia.
é a primeria vez que posto aqui, espero poder aprender bastante com voces, e ensinar um pouco do que sei =)

Bom ... vamos la ...
Estou com um probleminha.
Tenho uma tabela SAIDA_PRODUTO, onde faço a inserção dos produtos solicitados, nela contem os seguintes campos: data da solicitação, nome do setor solicitante, o tipo do produto e a quantidade.
Então, ai é que entra problema.
Toda vez que é solicitado um produdo, ocorre uma duplicidade de setor.
Ai criei uma trigger, que me informa todos os dados acima.

Isso vai para um relatório mensal, o relatório é constituído por uma view que contem inner join com 3 tabelas, fiz algumas alterações na view, depois da criação da trigger, estaria tudo perfeito, se não fosse o caso da trigger me retornar várias vezes, igual estava anteriormente.
Eu queria apenas que pegasse a setor solicitante e somasse a quantidade do produto solicitado por ele.

Simone

Simone

Responder

Posts

25/10/2013

Alex Lekao

passa me passa alguns inserts tambem por favor.

vou criar um banco de testes aqui e ver o que consigo.
Responder

25/10/2013

Simone


  insert into tb_setor
  values('TI'),('RH'),('Adm')


  insert into tb_estoque
  values( 1,'LEXMARK C792X1YG', 5, 10), -- Tonner Colorido
              ( 1,'LEXMARK LEXMARK X654X11L', 5, 10) -- Tonner Preto
		
		  
  insert into tb_TIPO_PRODUTO
  values ('Tonner')

  insert into tb_controle_estoque
  values (1, getdate(), 1, 1)
Responder

25/10/2013

Alex Lekao

Obrigado.

ta dando erro na criacao da view, acho que faltou alguma coisa...

estou vendo o que pode ser e ajustando para ver se consigo cria-la...

acho que o problema esta na CTE, mas estou vendo o que consigo.
Responder

25/10/2013

Jefferson Santos

Agora to livre no trabalho, vou tentar ajudar.
Responder

25/10/2013

Alex Lekao

ta requerendo uma tb_saida, nao achei o codigo de criacao. rsrsrsr

se quiser, e ficar mais facil para vc adicione o meu msn(skype), alex_linhares_es@yahoo.com.br, talvez assim a gente consigo ir testando e ajustando mais rapidamente. rsrsr
Responder

25/10/2013

Alex Lekao

Cola ai Jefferson, to apanhando... rsrsr

e aqui tao me parando toda hora nao consigo dar continuidade na linha de raciocinio. rsrsr
Responder

25/10/2013

Jefferson Santos

Vou dar uma lida no tópico para ver o que ela precisa.
Responder

25/10/2013

Simone

Obg Jefferson,
Alex, tenta esse


VIEW [dbo].[v_Estoque]
as
with TONNER as
(
SELECT 
    case
    when isnull (c.setor, ' ') = ' '  then p.setor
    when isnull (p.setor, ' ') = ' '  then c.setor
    else ' '
    end setor,
    p.Preto,
    c.Colorido
     
FROM (
        SELECT 
               --substring(NOME_PRODUTO, 15, 1),
               sa.DATA_SAIDA,
               dir.NOME_SETOR   setor,
               SUM(QUANTIDADE) Colorido
          FROM tb_PRODUTO pr
          inner join tb_controle_estoque sa
          ON pr.ID_PRODUTO = sa.ID_PRODUTO
          inner join tb_setor dir
          ON dir.ID_SETOR = sa.SETOR
          WHERE substring(pr.NOME_PRODUTO, 15, 1)in('y', 'C', 'M') 
          GROUP BY dir.NOME_SETOR,sa.DATA_SAIDA
    ) C
    full join 
    (
          SELECT
           sa.DATA_SAIDA,
           dir.NOME_SETOR   setor,
           SUM(QUANTIDADE) Preto
      FROM tb_PRODUTO pr
      inner join tb_controle_estoque sa
      ON pr.ID_PRODUTO = sa.ID_PRODUTO
      inner join tb_setor dir
      ON dir.ID_SETOR = sa.ID_SETOR
      WHERE substring(NOME_PRODUTO, 15, 1) = 'K' or substring(NOME_PRODUTO, 16,1) = 'L'
      GROUP BY DIR.NOME_SETOR,sa.DATA_SAIDA
    ) P
    ON C.setor = P.setor
)
 
SELECT
    setor ,
    isnull (preto, 0)    Preto,
    isnull (colorido,0)  Colorido,
    isnull (preto, 0) + isnull (colorido,0) Total    
FROM TONNER


Vou te add no skype, assim que lembrar minha senha rs
Responder

25/10/2013

Jefferson Santos

Simone se não for pedir muito com base nas tabelas a cima que você postou e nos insert
o que você quer?
Vou montar o select buscando as informações e depois você cria o que quiser com eles.
Pode ser?
Responder

25/10/2013

Simone

Pode ser Jefferson.

Preciso gerar um relatorio mensal, que me informe a qtde de produto que cada setor solicitou, no caso de cima usei o tonner, temos tonner preto e colorido.

Estava me retornando duplicado, por ex.
O Setor de TI solicitou 1 tonner preto e 1 colorido, apareceu duas vezes, preciso que apareça
1 na coluna Preto e 1 na coluna Colorido, totalizando 2.

Isso com a ajuda do Alex consegui resolver, maaas agora, qdo insiro o tonner colorido, o setor some da coluna, aparece somente a qtde.

Obs: Isso só acontece com o tonner colorido.
Responder

25/10/2013

Alex Lekao

oi Sinone,

eu consegui criar a View, mas tive que fazer alteracoes no codigo, pq tem duas tabelas que nao existem no banco e a view esta fazendo mencao nelas, a tb_produto, e a tb_saida.

com essa que vc postou agora eu tive que alterar novamente a tb_produto.
Responder

25/10/2013

Jefferson Santos

Samanta, desculpe a demora, estive enrolado no trabalho.
Esta consulta abaixo me retornou exatamente o que você queria com os insert que você colocou disponível.
Verifique agora no seu banco.

SELECT
   s.nome_setor ,
   (CASE WHEN c.id_produto = '1' THEN 'Preto' ELSE 'Colorido' END )as Produto, 
   quantidade = sum(quantidade)
	   FROM tb_controle_estoque c
INNER JOIN tb_setor s
on
s.id_setor = c.id_setor
WHERE C.ID_SETOR = 1
GROUP BY s.nome_setor, (CASE WHEN c.id_produto = '1' THEN 'Preto' ELSE 'Colorido' END )
Responder

25/10/2013

Jefferson Santos

Modo simplificado:

select DISTINCT(id_setor), id_produto, quantidade = sum(quantidade) from tb_controle_estoque
where id_setor = 1
GROUP BY id_setor, id_produto
Responder

28/10/2013

Simone

Modo simplificado:

select DISTINCT(id_setor), id_produto, quantidade = sum(quantidade) from tb_controle_estoque
where id_setor = 1
GROUP BY id_setor, id_produto


Oi Jefferson, não é bem isso que eu preciso.
Desse jeito, me retornou assim ..


SETOR - Produto - Qtde
Adm - Colorido - 0
Responder

28/10/2013

Simone

Modo simplificado:

select DISTINCT(id_setor), id_produto, quantidade = sum(quantidade) from tb_controle_estoque
where id_setor = 1
GROUP BY id_setor, id_produto



Esse me retorna assim ..


ID_SETOR - ID_PRODUTO - QTDE
1 - 10 - 0
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar