9 Replies Latest reply: Jul 15, 2015 10:03 AM by Maciel Alves Ferreira RSS

    Criando Referencia entre Tabelas

      Olá Pessoal.

       

      Estou iniciando no universo de BI com Qlik.

      Gostaria de uma ajuda, para um caso que creio ser simples para alguns.

       

      Tenho um banco em Sql Server 2008. Ele é usado para um sistema de varejo, vendas de produtos para restaurante. Nesse banco as tabelas vão se ligando por diversas colunas chaves, obviamente, porém, existe um caso que não esta rolando.

      Vou exemplificar com um comanda sql que funciona diretamente na base.

       

      (Aqui ele usa a tabela HEADERVENDAGERAL para pegar a data e a mesa que uma pessoa se sentou em um determinado dia)

      SELECT NU_SEQUENCIA,MESA_ID,DT_CONTABIL,NU_PESSOA1 FROM HEADERVENDAGERAL WHERE DT_CONTABIL='21/02/2015' AND MESA_ID=1

       

      (Com base na mesa, ele pega a sequencia, ou seja, o giro da mesa naquele dia, e ve o que foi consulmido de materiais nesta mesa, neste dia)

      SELECT (SELECT PRD_NOME FROM MATERIAL WHERE MATERIAL_ID = ITEMVENDAGERAL.MATERIAL_ID) MATERIAL,NU_SEQUENCIA,mesa_dest,mesa_orig FROM ITEMVENDAGERAL WHERE NU_SEQUENCIA=57 AND DT_CONTABIL='21/02/2015'

       

      No Qliviwer esta assim:

      SQL SELECT material_id as cod_material,prd_nome as desc_material,grupo_id,vl_precovenda from material;

       

      SQL SELECT grupo_id,nm_descricao from grupomaterial;

       

      SQL SELECT nu_sequencia as sequencia, MATERIAL_ID as cod_material,func_cancela as quem_cancelou,vl_preco,func_lanca as quem_lancou from itemvendageral;

       

      SQL SELECT mesa_id,nu_sequencia as sequencia,Year(dt_contabil) as Ano,dt_contabil as data,Month(dt_contabil) as Mes,Day(dt_contabil) as Dia from headervendageral;

       

      Meu objetivo, é clicar na data, ele pegar as mesas que foram usadas naquela data, clicar na sequencia, e ele me mostrar os materiais que foram consumidos naquela data.

      A primeira parte, até a sequencia, ele esta fazendo, só não mostrar os materiais que foram consulmidos quando seleciono a sequencia, e não sei porque...

       

      Só um detalhe, na tabela itemvendageral, existe um campo chamado vl_preco, este campo é o valor consumido pela mesa em um determinado dia, ou seja, se o cara seleciona data, mesa, sequencia, queria que aparecece este valor unico para vizualização, mas também não consegui.

       

      Agradeço se alguém puder me orientar.

       

      Abraço.

      Maciel

        • Re: Criando Referencia entre Tabelas
          Yuri Nicolett

          Maciel, você esta com dúvida de como montar a sua modelagem, correto?

          Ficaria um pouco mais fácil de entender se você disponibilizar suas tabelas com dados de exemplo, pode ser em uma planilha excel.

          • Re: Criando Referencia entre Tabelas
            Jonas Melo

            Oi, Maciel.

             

            As suas tabelas assemelham-se ao modelo que foi montado para as notas fiscais de vendas em um projeto.

             

            Modelo no projeto

             

            Obviamente, o banco de dados relacional de uma lado tem a tabela de cabeçalho e do outro os itens das vendas. Portanto, quando estas tabelas foram levadas para o DW, transformou-se em uma única – a tabela fato - nota fiscal de saída. Como?

             

            Alguns campos em comum às tabelas possibilitaram essa junção com um simples left join (sendo a tabela de cabeçalho a da esquerda), tais como: código da loja, nota fiscal, série e data geração da nota. Os demais campos da tabela de itens (valores, sequência, quantidade) foram "carregados". Quanto as demais tabelas, a saber, de dimensão, como família de produto e produto, conectaram-se por meio da associação.

             

            O seu modelo

             

            A sua tabela de itens de vendas não teria o campo mesa_id?  Se sim, teria entre as tabelas os campos em comum: loja, mesa, data contábil ou de geração para um simples left join, ficando o modelo como imagem mesa_id_nas_duas tabelas_.jpg. Ou o campo sequencia seria esse objeto forte de ligação? Caso afirmativo, o mesa_id estaria apenas na tabela de cabeçalho como imagem sequencia_como_campo_forte_nas_duas_tabelas.jpg. Notarás que o modelo não mudará a sua forma, mas sim a essência, dentro do script. Entretanto, para ambos precisará da data nas duas tabelas, com ou sem o mesa_id.

             

            P.S.: foi acrescentado um modelo de como ficaria o script.

             

            Espero que isso ajude!