none
Fazer buscas sqlite por hierarquia RRS feed

  • Pergunta

  • Olá

    Desenvolvi um gerenciador financeiro onde salvo as contas a pagar em uma tabela SQLite com digamos Fornecedor, vencimento, valor e plano de conta (Ex.: Manutenção Veículos, Despesas Escritório etc...)

    Até aí tudo bem, posso fazer uma pesquisa por "Despesas Escritório" e tudo certo, mas a questão agora é adicionar sub grupos (hierarquia) aos planos de conta. Ex.

    Despesas Escritório > Folhas Oficio > Timbradas

    Despesas Escritório > Canetas 

    Quando faço uma busca "WHERE PlanoConta LIKE @DespesasEscritorio" deverá exibir também Folhas Oficio, Timbradas, Canetas

    e assim por diante.

    Não consigo pensar como fazer, quem puder me ajudar agradeço.


    terça-feira, 10 de janeiro de 2017 17:09

Todas as Respostas

  • Olá Eliseu,

    Como você estruturou essa hierarquia? Como está a estrutura das suas tabelas que contém o plano de contas e a respectiva hierarquia?


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quarta-feira, 11 de janeiro de 2017 12:01
  • Olá André

    Na verdade eu tenho a  tabela com nome GrupoCategorias com coluna Nome.

    Dentro desta tabela eu salvo todos os grupos de categorias, ex.: 

    ID   Nome

    1    Formas de Pagamento

    2    Bancos

    3   Plano de Contas

    Então eu tenho outra tabela com nome Categorias com colunas Nome e GrupoCategoriaID. Nesta eu salvo todas as categorias juntas, apenas informando a ID do GrupoCategoria:

    ID   Nome             GrupoCategoriaID

    1    Dinheiro              1

    2    Cheque               1

    3    Banrisul              2

    4    Boleto                 1

    5    Desp. Escritorio   3

    Então quando faço uma busca uso a ID do GrupoCategoria (GrupoCategoriaID).

    Em contas a pagar eu também incluo uma coluna com a ID da categoria. Ex.: ID 5 (Desp. Escritorio) e quando faço uma busca eu filtro por ID 5:

    SELECT * FROM ContasPagar WHERE CategoriaID LIKE '5'



    • Editado Eliseu5 quarta-feira, 11 de janeiro de 2017 21:35
    quarta-feira, 11 de janeiro de 2017 21:29
  • Acredito que uma solução para você seria a utilização de recursão para realizar a  consulta nas subcategorias.

    Aqui você encontra um bom artigo sobre CTE: https://blog.sqlauthority.com/2012/04/24/sql-server-introduction-to-hierarchical-query-using-a-recursive-cte-a-primer/


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MVP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quinta-feira, 12 de janeiro de 2017 13:27
  • Olá André

    Agradeço por seu interesse em me ajudar. Li todo o conteúdo sugerido, no entanto não entendi como pode ser aplicado ao meu código.

    Eu  poderia salvar com IDs como  1.1.1, 2.0, 3.1. etc, aprofundando o nível, mas e como fazer as buscas? 

    quinta-feira, 12 de janeiro de 2017 17:32