none
Comando SQL RRS feed

  • Pergunta

  • Boa tarde

    Tenho uma tabela de nome PRODUTO, e ITEVDA - Onde é armazenado as vendas e os produtos que fazem parte desse cupom.

    Onde: PROCOD: Armazena o codigo do produto - esse campo existe nas duas tabelas

    TRNDAT: armazena a data da venda - fica na tabela ITEVDA

    Precisa de um comando que mostrasse:

    um produto X que foi vendido, e saber quais produtos foram vendidos junto com esse produto X e horário.

    Exemplo: Sabão, quero saber quais os produtos que levaram junto com o Sabão e os horários das vendas.

    quinta-feira, 7 de fevereiro de 2019 17:52

Respostas

Todas as Respostas

  • Olá,

    Faça o seguinte:

    SELECT * FROM ITEVDA a 

    inner join PRODUTO b on a.PROCOD = b.PROCOD

    where PROCOD like (código do item que quer buscar)

    isso mostra todas as vendas e cupons que esse item fez/faz parte.

    quinta-feira, 7 de fevereiro de 2019 18:20
  • Porem so ira trazer o produto especifico e não os que foram vendidos com ele

    e mesmo assim apresenta o erro que o procod do where é uma coluna ambiguo

    quinta-feira, 7 de fevereiro de 2019 18:36
  • Olá,

    Faça o seguinte:

    SELECT * FROM ITEVDA a 

    inner join PRODUTO b on a.PROCOD = b.PROCOD

    where PROCOD like (código do item que quer buscar)

    isso mostra todas as vendas e cupons que esse item fez/faz parte.

    Faltou no código:

    SELECT * FROM PRODUTO b


    Ana Gauna | Microsoft Partner CSP | Skype: amgauna@hotmail.com | If I helped you, mark the answer as useful

    quinta-feira, 7 de fevereiro de 2019 18:38
  • Porem so ira trazer o produto especifico e não os que foram vendidos com ele

    e mesmo assim apresenta o erro que o procod do where é uma coluna ambiguo

    Entendi sua dúvida, veja sobre SUBSELECT que poderá te ajudar!
    quinta-feira, 7 de fevereiro de 2019 18:52
  • Sim,

    Existe a tabela de vendas que o nome dela é transacao e a tabelas de itens vendidos é essa ITEVDA

    Na transacao fica o cupom vendido e na itevda fica os itens do cupom.
    quinta-feira, 7 de fevereiro de 2019 18:55
  • Tabela transacao possui os campos

    TRNSEQ: sequencial da venda

    TRNDAT: Data da venda

    CXANUM: caixa da venda

    A ITEVDA possui os mesmo campos, porem tem o campo procod também pois é a tabela de itens de venda

    esses 3 campos são chave primaria, assim como estrangeira da outra tabela.


    quinta-feira, 7 de fevereiro de 2019 19:19
  • Editando o esboço ficou assim

    with Venda_Produto as (
    SELECT distinct PROCOD, TRNSEQ
      from ITEVDA
      where PROCOD = '07891132019403'
    )
    SELECT VP.PROCOD as [Produto referência], 
           T.TRNDAT as [Data & horário da venda],
           I.PROCOD as [Produto vendido junto]
      from Venda_Produto as VP
           inner join ITEVDA as I on I.TRNSEQ = VP.TRNSEQ
           inner join TRANSACAO as T on T.TRNSEQ = VP.TRNSEQ
      where I.PROCOD <> VP.PROCOD;

    

    

    um order by na data se encaixaria onde ?
    quinta-feira, 7 de fevereiro de 2019 19:23
  • Porem ele esta mostrando também do mesmo dia 

    Obviamente ele foi vendido mais de uma vez junto no mesmo dia 

    mas não tem uma opção de contar também, para não trazer varias vezes 

    quinta-feira, 7 de fevereiro de 2019 20:36
  • Então está faltando conter um campo na tabela para informar quantos produtos o item de referência tem em estoque ainda faltando ser vendido, e outro campo para ser colocado a quantidade já vendida do item. Isso para evitar que o sistema venda item que não tem em estoque quando a quantidade chegar a zero no item.


    Ana Gauna | Microsoft Partner CSP | Skype: amgauna@hotmail.com | If I helped you, mark the answer as useful

    quinta-feira, 7 de fevereiro de 2019 21:28
  • Bom dia 

    Então Jose, o comando que voce me mandou, atende sim a necessidade, a unica coisa que não consigo colocar é a hora que é justamente o que preciso

    porem como voce vê a hora vem zerado, porem se eu exibir um relatório no sistema de venda de cupom, ele me mostra a hora

    TABELA ITEVDA

    

    tabela transacao

    nela achei esse campo TRNHOR que é o horario, que no caso tem que ir no comando que não me lembrei de colocar

    


    sexta-feira, 8 de fevereiro de 2019 15:11
  • Entendido Jose, vou falar para o pessoal do desenvolvimento do software sobre a chave substituta.

    O relatório é emitido sim, independente de loja 

    O comando funcionou perfeitamente.

    Obrigado mais uma vez


    sexta-feira, 8 de fevereiro de 2019 18:55
  • O nome é PRODES

    E esta na tabela de PRODUTO

    sexta-feira, 8 de fevereiro de 2019 19:46
  • Ótimo

    Obrigado Jose

    segunda-feira, 11 de fevereiro de 2019 12:14
  • Opa Jose, 

    é que foi preciso acrescentar algo que estava faltando que não lembrei

    o mesmo é o seguinte

    1 - o valor unitário do item: que no caso se encontra na tabela ITEVDA, e o nome do campo é ITVVLRUNI.

    2 - Mostrar também a quantidade dos itens.

    3-  E o numero do cupom do item que no caso é o campo TRNSEQEQP, que fica na table TRANSACAO

    Editei o comando, mas onde encaixaria a quantidade de itens de cada cupom

    -- código #1 v5
    with 
    -- obtém os cupons fiscais em que o produto de referência foi vendido
    Cupom_Produto as (
    SELECT distinct PROCOD, TRNSEQ, TRNDAT, CXANUM, ITVVLRUNI
      from ITEVDA
      where PROCOD = '00000000000017'
    )
    -- emite relação solicitada
    SELECT --distinct
           VP.PROCOD as [Produto referência], 
           I.PROCOD as [Cód. produto vendido],
           P.PRODES as [Nome produto vendido],
       convert (char(10), T.TRNDAT, 103) as [Data], T.TRNHOR as Hora,
       I.ITVVLRUNI AS [Valor do Item],
       T.TRNSEQEQP AS [Numero do Cupom]
       --, T.CXANUM, T.TRNSEQ
    from Cupom_Produto as VP
           inner join ITEVDA as I on I.TRNSEQ = VP.TRNSEQ
                                     and I.TRNDAT = VP.TRNDAT
                                     and I.CXANUM = VP.CXANUM

           inner join TRANSACAO as T on T.TRNSEQ = VP.TRNSEQ
                                     and T.TRNDAT = VP.TRNDAT
                                     and T.CXANUM = VP.CXANUM
    and t.TRNSEQEQP = i.TRNSEQ

           left join PRODUTO as P on P.PROCOD = I.PROCOD
      where I.PROCOD <> VP.PROCOD
      order by  T.TRNDAT ASC





    segunda-feira, 11 de fevereiro de 2019 17:47