5 Replies Latest reply: Jan 30, 2013 7:32 AM by Eduardo Correa da Silva RSS

    Select unico em todas as tabelas que iniciam com ABC

    Fabricio Pedrassani

      É possível fazer um select em uma banco firebird onde para cada mês tenho uma tabela com o movimento sendo que as tabelas sempre iniciam com ABC+o mes e ano, por exemplo: ABC122012, ABC012013.

       

      Exemplo: select * from ABC*;??

        • Re: Select unico em todas as tabelas que iniciam com ABC
          Aderlan Rodrigues

          Olá,

          Sim, é possível, use o comando FOR para percorrer os meses e anos que precisar, ou FOR EACH, na ajuda (F1) tem exemplo.

           

          Se não conseguir, anexe um qvw de exemplo que ajudamos.

           

          Abraço.

          • Re: Select unico em todas as tabelas que iniciam com ABC

            Bom Dia,

             

            Uma maneira de conseguir realizar a extração dos dados das tabelas mencionadas (ABC*) é utilizando uma conexão ODBC para a extração das informações.

             

            Quando utiliza esta conexão, ao inserir o comando SQLTABLES, automaticamente o sistema carrega algumas informações da base de dados (verificar Help do Qlikview):

             

            TABLE_QUALIFIER

            TABLE_OWNER

            TABLE_NAME

            TABLE_TYPE

            REMARKS

            DATA_SOURCE

             

            Neste caso o que é preciso utilizar é a tabela TABLE_NAME (e caso seja necessário a de OWNER também).

             

            A idéia desta extração é criar uma tabela auxiliar com os nomes das tabelas desejadas (neste caso ABC*) e criar um laço de repetição para ir lendo todas elas agregando em uma unica tabela.

             

            Seria algo parecido com este exemplo:

             

             

            ...

             

            ODBC CONNECT32 TO SUA_BASE_FIREBIRD (XUserId is ReFTYWVMHLYWI, XPassword is ObNCTWVMHLYaWSdMBTCA);

             

             

            ODBC:

            SQLTABLES;

             

             

            //DISCONNECT;  // Finaliza a conexão ODBC

            NOCONCATENATE

            AUXILIAR:

                      LOAD *

                      RESIDENT ODBC

                      WHERE TABLE_NAME LIKE 'ABC*';  // Tabelas que começam com "ABC"

             

            DROP TABLE ODBC;

             

            LET vQtdRegistro = NoOfRows('AUXILIAR'); // Verifica a quantidade de registros de tabelas que começam com "ABC"

             

            FOR i=0 TO (vQtdRegistro - 1) // Executa um loop de acordo com a quantidade de tabelas encontradas

             

                      LET vTabela = PEEK('TABLE_NAME', i, 'AUXILIAR'); // O nome da tabela é inserida dentro de uma variável ex: ABC122012

             

                      TEMP:

                 LOAD *;

                 SQL

                      SELECT *

                      FROM $(vTabela);  // Se for necessário, insira o owner antes do valor da variável ex: SEU_OWNER.$(vTabela) - não é necessário inserir aspas ou utilizar o "&" para concatenar os campos.

             

             

            NEXT