GARANTIR DESCONTO

Fórum UNION = Data type unknown #41670

21/01/2004

0

Estou utilizando uma Base FB 1.5 RC7 e estou testando o script com o IBExpert.
A instrução SQL que segue abaixo, funcionava bem com a base antiga Access(estou convertendo para FB).
Pesquisei os Post´s referentes à union, mas nada foi esclarecido :cry:

Sobre os campos, ambos os campos que são convertidos para ::
´CODIGO´ são do tipo INTEGER
´INICIO´ são do tipo TIMESTAMP
´ASSUNTO´ são do tipo VARCHAR(100)
´ATENDENTE´ são do tipo INTEGER
Resumindo :: A nomenclatura, o tipo e o tamanho dos campos é o mesmo para todos!

O erro obtido é ´Data type unknown´ e segue logo abaixo junto do SQL.

/*******************************************************************************
The next statement causes the following error: 

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid command.
Data type unknown.
*******************************************************************************/
SELECT ATENDIMENTOS.CODATENDIMENTO AS CODIGO,
       ATENDIMENTOS.INICIO AS INICIO,
       ATENDIMENTOS.DESCRICAO AS ASSUNTO,
       ATENDIMENTOS.TECNICO AS ATENDENTE,
       ´Atendimento´ AS TIPO,
       1 AS INDICADOR FROM ATENDIMENTOS
         WHERE ATENDIMENTOS.CLIENTE = :cli
           UNION
             SELECT ATIVIDADES.CODIGO AS CODIGO,
                    ATIVIDADES.INICIO AS INICIO,
                    ATIVIDADES.ASSUNTO AS ASSUNTO,
                    ATIVIDADES.GERADAPARA AS ATENDENTE,
                    ´Atividade´ AS TIPO,
                    2 AS INDICADOR FROM ATIVIDADES
                      WHERE ATIVIDADES.CLIENTE = :cli1
                        UNION
                          SELECT VISITAS.CODVISITA AS CODIGO,
                                 VISITAS.ATENDIDA AS INICIO,
                                 VISITAS.ASSUNTO AS ASSUNTO,
                                 VISITAS.TECNICO AS ATENDENTE,
                                 ´Visita´ AS TIPO,
                                 3 AS INDICADOR FROM VISITAS
                                   WHERE VISITAS.CLIENTE = :cli2
                                     ORDER BY INICIO DESC



Maicongabriel

Maicongabriel

Responder

Posts

21/01/2004

Afarias

{...}
cast(´Atendimento´ as varchar(15)) AS TIPO,
cast(1 as integer) AS INDICADOR FROM ATENDIMENTOS
{...}
UNION
{...}
cast(´Atividade´ as varchar(15)) AS TIPO,
cast(2 as integer) AS INDICADOR FROM ATIVIDADES
{...}



T+


Responder

Gostei + 0

21/01/2004

Maicongabriel

OK! Muito Obrigado, funcionou perfeitamente!
Agora, uma curiosidade a respeito do [b:8706616537]ORDER BY[/b:8706616537]...

Executando a SQL anterior [já corrigida], tenho a seguinte tabela !
CODIGO    [INTEGER]
INICIO    [TIMESTAMP]
ASSUNTO   [VARCHAR(100)]
ATENDENTE [INTEGER]
TIPO      [VARCHAR(15)]
INDICADOR [INTEGER]

Tentando utilizar o [b:8706616537]ORDER BY[/b:8706616537] assim ::

ORDER BY INICIO DESC

Obtenho o erro :: ´invalid ORDER BY clause.´

Então para corrigir informei o Indice do campo criado, no caso 2, ficando assim ::

ORDER BY 2 DESC

Funcionou bem !

Mas minha curiozidade é :: Esta certo isto o que eu fiz ? (certo esta, pois funcionou, pergunto eu se este é o modo padrão!) Existem outras formas de se fazer isto ? Já que aquele erro me foi apresentado!...


Responder

Gostei + 0

21/01/2004

Afarias

|Mas minha curiozidade é :: Esta certo isto o que eu fiz ?

Quanto a usar o ´índice´ do campo no ORDER BY?? CERTÍSSIMO!

Em agumas ocasiões, somente assim.



T+


Responder

Gostei + 0

22/06/2016

Israel Lopes

Me desculpe pegar carona no assunto de vocês, mas podem me ajudar:
O Script abaixo funciona no FB 2.5 mas não funciona no 1.5

CREATE VIEW ESPELHO(
    DTMOVPROD,
    TIPOMOV,
    CODNAT,
    CODVENDA,
    CODCOMPRA,
    CODPROD,
    DESCPROD,
    CODFISC,
    TIPOMOVPROD,
    DOCMOVPROD,
    CODALMOX,
    CODLOTE,
    QTDMOVPROD,
    PRECOMOVPROD,
    ESTOQMOVPROD,
    SLDMOVPRODAX,
    TIPOPROD,
    CUSTOMPMMOVPRODAX,
    SLDMOVPROD,
    CUSTOMPMMOVPROD,
    CODMOVPROD,
    CODEMPTM,
    CODEMP,
    CODFILIALTM,
    CODFILIAL,
    SALDO,
    NOME)
AS
SELECT
MP.DTMOVPROD,
TM.TIPOMOV,
MP.CODNAT,
MP.CODVENDA,
MP.CODCOMPRA,
MP.CODPROD,
eq.descprod,
eq.codfisc,
MP.TIPOMOVPROD,
MP.DOCMOVPROD,
MP.CODALMOX,
MP.CODLOTE,
MP.QTDMOVPROD,
MP.PRECOMOVPROD,
MP.ESTOQMOVPROD,
MP.SLDMOVPRODAX,
EQ.TIPOPROD,
MP.CUSTOMPMMOVPRODAX,
MP.SLDMOVPROD,
MP.CUSTOMPMMOVPROD,
MP.CODMOVPROD,
MP.CODEMPTM,
TM.CODEMP,
MP.CODFILIALTM,
TM.CODFILIAL,
(MP.sldmovprod*MP.CUSTOMPMMOVPROD) SALDO,
CLI.NOMECLI
CODTIPOMOV
FROM EQMOVPROD MP, EQTIPOMOV TM
INNER JOIN EQPRODUTO eq on mp.codprod = eq.codprod
inner join vdvenda vd on mp.codvenda=vd.codvenda
inner join vdcliente cli on vd.codcli = cli.codcli
where MP.CODEMPTM=TM.CODEMP AND MP.CODFILIALTM=TM.CODFILIAL AND
MP.CODTIPOMOV=TM.CODTIPOMOV AND tipoprod='P' and mp.codcompra is null
union all
SELECT MP.DTMOVPROD,
TM.TIPOMOV,
MP.CODNAT,
MP.CODVENDA,
MP.CODCOMPRA,
MP.CODPROD,
eq.descprod,
eq.codfisc,
MP.TIPOMOVPROD,
MP.DOCMOVPROD,
MP.CODALMOX,
MP.CODLOTE,
MP.QTDMOVPROD,
MP.PRECOMOVPROD,
MP.ESTOQMOVPROD,
MP.SLDMOVPRODAX,
EQ.TIPOPROD,
MP.CUSTOMPMMOVPRODAX,
MP.SLDMOVPROD,
MP.CUSTOMPMMOVPROD,
MP.CODMOVPROD,
MP.CODEMPTM,
TM.CODEMP,
MP.CODFILIALTM,
TM.CODFILIAL,
(MP.sldmovprod*MP.CUSTOMPMMOVPROD) SALDO,
FORN.RAZFOR
CODTIPOMOV
FROM EQMOVPROD MP, EQTIPOMOV TM
INNER JOIN EQPRODUTO eq on mp.codprod = eq.codprod
inner join cpcompra cp on mp.codcompra = cp.codcompra
inner join cpforneced forn on cp.codfor =forn.codfor
where MP.CODEMPTM=TM.CODEMP AND MP.CODFILIALTM=TM.CODFILIAL AND
MP.CODTIPOMOV=TM.CODTIPOMOV AND tipoprod='P' and mp.codvenda is null;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar