[firebase-br] Procedure para Listar dados de duas tabelas em forma de cascata

Sandro Souza escovadordebits em gmail.com
Ter Set 15 10:58:23 -03 2009


Bom dia/tarde Magnun.

Grande Magnun, faço aqui a minha humilde sugestão baseada no exemplo que
você informou:

SET TERM ^ ;
CREATE OR ALTER PROCEDURE SELECAO RETURNS(
  -- Descrição de cada item da árvore.
  VALOR VARCHAR(100)
) AS
DECLARE VARIABLE ID_ITEM INTEGER;
BEGIN
  -- Laço principal, dos itens.
  FOR SELECT ITEM, ID_ITEM FROM ITENS INTO :VALOR, :ID_ITEM DO
  BEGIN
    -- Envia a decrição do item atual.
    SUSPEND;
    -- Laço dos subitens do item atual.
    FOR SELECT SUB_ITEM FROM SUB_ITENS WHERE ID_ITEM = :ID_ITEM INTO :VALOR
DO
    BEGIN
      -- Acrescenta um prefixo na descrição do subitem para informar que
trata-se de um subitem.
      VALOR = '-- ' || VALOR;
      -- Envia a descrição do subitem atual.
      SUSPEND;
    END -- FOR
  END -- FOR
END^
SET TERM ; ^

Espero ter ajudado mais que atrapalhado. :D

2009/9/15 Magnun Oliveira <magnunoliveira em gmail.com>

> Bom dia a todos.
>
> Tenho a seguinte situacao e agradeceria se recebece um auxilio da galera da
> lista:
>
> Tenho uma tabela de itens e sub_itens e preciso exibir essa listagem em um
> treeview. Ex:
>
> tabela de itens
>
> id_item - item
>
> 1-'item1'
> 2-'item2'
> 3-'item3'
>
> tabela de sub itens
> id_sub_item, id_item, sub_item
>
> 1-1-'sub_item1'
> 2-1-'sub_item2'
> 3-1-'sub_item3'
> 4-2-'sub_item4'
> 5-2-'sub_item5'
> 6-3-'sub_item6'
> 7-3-'sub_item7'
> 8-3-'sub_item8'
>
> O retorno que necessito seria isso:
>
> item1
> --subitem1
> --subitem2
> --subitem3
> item2
> --subitem4
> --subitem5
> item3
> --subitem6
> --subitem7
> --subitem8
>
>
> Qual a melhor solucao para isso? tentei usar uma procedure mais nao estou
> conseguindo gerar o resultado. seria algo +- como:
>
>
> create procedure selecao
> returns (
> valor varchar(20)
> )
> as
> declare variable id_item integer;
> begin
> for select item, id_item
> from itens
> into :valor, :id_item
> do
> select sub_item from sub_itens where id_item = :id_item into :valor;
> suspend;
> end^
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista