[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