[firebase-br] Unir 3 tabelas

Evandro Siqueira vansiqq em gmail.com
Qua Jun 20 14:17:02 -03 2007


Até onde eu entendo, para utilizar a cláusula union as colunas tem que 
ser rigorosamente iguais em todas as tabelas envolvidas no select.

[]'s
Evandro Siqueira
Aracaju/SE



Dominio Informatica escreveu:
> Boa tarde,
> o erro é o seguinte
> Nome do Erro
> Invalid token.Dynamic SQL Error.
> SQL error code = -104.
> Invalid command.
> Data type unknown.
> Transaction rolled back.
>
>
> segue as tabelas ...
>
> CREATE TABLE CAIXA (
>   CODIGO       INTEGER NOT NULL,
>   DEBITO       NUMERIC(10, 2),
>   TIPO         VARCHAR(1) CHARACTER SET ISO8859_1,
>   PAGAMENTO    VARCHAR(20) CHARACTER SET ISO8859_1,
>   NUMPEDIDO    INTEGER,
>   DESPESA      INTEGER,
>   SALARIO      INTEGER,
>   DATAI        VARCHAR(10) CHARACTER SET ISO8859_1,
>   DATAF        VARCHAR(10) CHARACTER SET ISO8859_1,
>   SEQVOS       INTEGER,
>   JUROSPAGO    NUMERIC(8, 2),
>   JUROSCOBRADO NUMERIC(8, 2),
>   DATA         DATE,
>   HISTORICO    VARCHAR(100) CHARACTER SET ISO8859_1,
>   DESCONTO     NUMERIC(8, 2),
>   TROCO        NUMERIC(8, 2),
>   EMPRESA      INTEGER,
>   CODEMPRESA   INTEGER,
>   CAIXA        INTEGER,
>   PARCELA      INTEGER,
>   DATAVALE     DATE,
>   CREDITO      NUMERIC(8, 2),
>   LUCRO        NUMERIC(8, 2)
> );
>
>
> CREATE TABLE CAIXA2 (
>   CODIGO       INTEGER NOT NULL,
>   DEBITO       NUMERIC(10, 2),
>   TIPO         VARCHAR(1) CHARACTER SET ISO8859_1,
>   PAGAMENTO    VARCHAR(20) CHARACTER SET ISO8859_1,
>   NUMPEDIDO    INTEGER,
>   LUCRO        VARCHAR(20) CHARACTER SET ISO8859_1,
>   DESPESA      INTEGER,
>   SALARIO      INTEGER,
>   DATAI        VARCHAR(10) CHARACTER SET ISO8859_1,
>   DATAF        VARCHAR(10) CHARACTER SET ISO8859_1,
>   SEQVOS       INTEGER,
>   JUROSPAGO    NUMERIC(8, 2),
>   JUROSCOBRADO NUMERIC(8, 2),
>   DATA         DATE,
>   HISTORICO    VARCHAR(100) CHARACTER SET ISO8859_1,
>   CREDITO      NUMERIC(8, 2),
>   EMPRESA      INTEGER,
>   CODEMPRESA   INTEGER,
>   DATAVALE     DATE
> );
>
> CREATE TABLE CHEQUE (
>   SEQUENCIAL     INTEGER NOT NULL,
>   CODIGO         INTEGER,
>   BANCO          VARCHAR(30) CHARACTER SET ISO8859_1,
>   NUMCHEQUE      VARCHAR(10) CHARACTER SET ISO8859_1,
>   DEBITO         NUMERIC(10, 2),
>   VENCEU         VARCHAR(1) CHARACTER SET ISO8859_1,
>   DESPESA        INTEGER,
>   CREDITO        NUMERIC(10, 2),
>   DATA           DATE,
>   DATAVENCIMENTO DATE,
>   HISTORICO      VARCHAR(100) CHARACTER SET ISO8859_1,
>   EMPRESA        INTEGER,
>   CODEMPRESA     INTEGER,
>   JUROSPAGO      NUMERIC(8, 2),
>   SALARIO        INTEGER,
>   DATAI          VARCHAR(10) CHARACTER SET ISO8859_1,
>   DATAF          VARCHAR(10) CHARACTER SET ISO8859_1,
>   TIPO           VARCHAR(1)
> );
>
>
>
> Atenciosamente,
>
> Rodrigo
>
>
> ----- Original Message ----- 
> From: "Samuel Duarte Matos" <samuelmatos em cprinformatica.com.br>
> To: <lista em firebase.com.br>
> Sent: Wednesday, June 20, 2007 9:16 AM
> Subject: Re: [firebase-br] Unir 3 tabelas
>
>
>   
>> O union com as 3 tabelas tem que funcionar.
>>
>> Que erro que dá? Qual a estrutura das tabelas? Para que possamos ajudar, 
>> precisamos do máximo de informações.
>>
>> Mas olhando seu problema, eu diria para dar uma olhada nos tipos dos 
>> campos das 3 tabelas. No union, todos os campos devem ser do mesmo tipo e 
>> tamanho (no caso de varchar).
>>
>> O problema pode ser com um campo data, tb. Numa tabela temos um campo 
>> Date, na outra Timestamp. Tb dá erro.
>>
>> T+
>>
>>
>> "Dominio Informatica" <dominio em engeplus.com.br> escreveu na mensagem 
>> news:000601c7b326$e17f8b70$05fea8c0 em rodrigo...
>> Bom dia a todos...
>>
>> Estou com o seguinte problema... eu preciso pegar informações de 3 
>> tabelas,
>> Caixa,Caixa2,Cheque.
>> Caixa e Caixa2 são exatamente iguais, Cheque contem as mesmas colunas das
>> outras tabelas porém tem colunas adicionais.
>> Se eu fizer um "union" das 3 tabelas retorna erro. Se eu fizer union das 2
>> tabelas iguais de depois separadamente chamar a tabela cheque dae 
>> funciona,
>> mas fica fora de ordem. Ex. Primeiro busca todas as informações das 2
>> primeiras tabelas depois busca a da terceira. Os dados não se misturam. 
>> Tem
>> outra forma de fazer isso sem ser desta forma?
>>
>> CREATE PROCEDURE RELCAIXA (
>>  DI DATE,
>>  DF DATE
>> )
>> RETURNS (
>>  DATA DATE,
>>  HISTORICO VARCHAR(100),
>>  DEBITO NUMERIC(8, 2),
>>  CREDITO NUMERIC(8, 2),
>>  TIPO VARCHAR(1)
>> )
>> AS
>> BEGIN
>> FOR
>> SELECT DATA,HISTORICO,DEBITO,CREDITO,TIPO FROM CAIXA WHERE DATA BETWEEN 
>> :DI
>> AND :DF AND TIPO!='R' AND TIPO!='A'
>> UNION
>> SELECT DATA,HISTORICO,DEBITO,CREDITO,TIPO FROM CAIXA2 WHERE DATA BETWEEN 
>> :DI
>> AND :DF AND TIPO!='R' AND TIPO!='A'
>> INTO :DATA,:HISTORICO,:DEBITO,:CREDITO,:TIPO
>> DO
>> SUSPEND;
>>
>> FOR
>> SELECT DATA,HISTORICO,DEBITO,CREDITO,TIPO FROM CHEQUE WHERE DATA BETWEEN 
>> :DI
>> AND :DF AND (DESPESA IS NOT NULL OR DESPESA!='')
>> INTO :DATA,:HISTORICO,:DEBITO,:CREDITO,:TIPO
>> DO
>> SUSPEND;
>>
>> END
>> ;
>>
>> Atenciosamente,
>> Rodrigo
>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para editar sua configuração na lista, use o endereço 
>> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>>
>>
>>
>>
>>     
>
>
> --------------------------------------------------------------------------------
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço 
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa 
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>   





Mais detalhes sobre a lista de discussão lista