[firebase-br] isql x Ibexpert

Eduardo Pelizzari de Andrade eduardoandrade em persoft.com.br
Sex Set 12 11:24:48 -03 2008


O problema deve ser o dialeto, no ibexpert vocês está usando o dialeto 1 
e no isql você está usando o dialeto 3. O dialeto 3 não permite que uma 
query tenha um campo com nomes iguais em mais de uma tabela envolvida na 
query e que não está especificado de quem é o campo.

O camando abaixo deve funcionar tanto no isql como no ibexper. A 
alteração está no subselect, inseri a tabela CPJ para determinar o campo 
CPJ_CDCLII006.

UPDATE TB_CPJ  SET SCL_CDOBSI003 = 3 WHERE CPJ_CDCLII006 IN (SELECT CPJ.CPJ_CDCLII006
  FROM TB_CPJ CPJ INNER JOIN TB_CRE CRE ON (CPJ.CPJ_CDCLII006 = CRE.CPJ_CDCLII006)
                  INNER JOIN TB_CPF CPF ON (CPJ.CPJ_CDCLII006 = CPF.CPJ_CDCLII006)
 WHERE CRE.CRE_SERIEA003 = 'UNI'
 AND CRE.CRE_SITUAA001 <> 6
 AND CRE.EMP_CDEMPA003 = '001'     
 AND CRE.CRE_DTVEND000 < (SELECT cast ('now' as timestamp) - 15 from rdb$database)
 AND CRE.CRE_VLPAGN017 < CRE.CRE_VALORN017
 AND CRE.CRE_EMFATA003 <> '1'
 AND CPJ.CPJ_CCOEMA001 = 'S'
 AND CRE.CRE_VALORN017 > 5
 AND CRE.CPJ_CDCLII006 <>  85  
 AND CPJ.SCL_CDOBSI003 NOT IN (3,6) 
 );


Uma outra coisa que sempre faço porque já tive problema é sempre que a 
mesma tabela está sendo chamada mais de uma vez na mesma sentença, dou 
alias para cada uma das chamadas, mesmo se uma chamada estiver no update 
e outra no subselecte, para ter certeza que o firebird vai entender quem 
é quem. Mas ai acho que mais neura pessoal.

Eduardo Pelizzari de Andrade
Persoft Softwares Aplicativos




Carlos H. Cantu escreveu:
> Vc deve estar rodando esses comandos em versões diferentes do FB. A
> partir do FB 2.0, quando vc monta comandos onde um determinado campo
> existe em mais de uma tabela envolvida nesse comando, você deve usar
> um alias pra dizer ao FB de qual tabela aquele campo se refere, visto
> que não tem como o FB adivinhar isso.
>
> Para corrigir o seu problema, especifique o alias correto para o campo
> CPJ_CDCLII006
>
> []s
> Cantu
> http://www.warmboot.com.br
> FireBase - http://www.FireBase.com.br
> Blog - http://blog.firebase.com.br
>
> DR> Bom dia,
>
>
> DR> Existe alguma diferença entre os comandos executados pelo Ibexpert e o Isql?
>
> DR> Alguns scripts que executo no IBexpert são executados normalmente
> DR> sem erros e no Isql apresentam erros.
> DR> Segue um exemplo.
>
>
> DR> -Ibexpert
>
> DR> UPDATE TB_CPJ SET SCL_CDOBSI003 = 3 WHERE CPJ_CDCLII006 IN (SELECT CPJ_CDCLII006
> DR>  FROM TB_CPJ CPJ INNER JOIN TB_CRE CRE ON (CPJ.CPJ_CDCLII006 = CRE.CPJ_CDCLII006)
> DR>                  INNER JOIN TB_CPF CPF ON (CPJ.CPJ_CDCLII006 = CPF.CPJ_CDCLII006)
> DR> WHERE CRE.CRE_SERIEA003 = 'UNI'
> DR> AND CRE.CRE_SITUAA001    <> 6
> DR> AND CRE.EMP_CDEMPA003  = '001'        
> DR> AND CRE.CRE_DTVEND000   < (SELECT cast ('now' as timestamp) - 15 from rdb$database)
> DR> AND CRE.CRE_VLPAGN017   < CRE.CRE_VALORN017
> DR> AND CRE.CRE_EMFATA003   <> '1'
> DR> AND CPJ.CPJ_CCOEMA001   = 'S'
> DR> AND CRE.CRE_VALORN017   > 5
> DR> AND CRE.CPJ_CDCLII006    <>  85 
> DR> AND CPJ.SCL_CDOBSI003 NOT IN (3,6)
> DR> );
>
> DR> -Isql
> DR> UPDATE TB_CPJ SET SCL_CDOBSI003 = 3 WHERE CPJ_CDCLII006 IN (SELECT CPJ_CDCLII006
> DR>  FROM TB_CPJ CPJ INNER JOIN TB_CRE CRE ON (CPJ.CPJ_CDCLII006 = CRE.CPJ_CDCLII006)
> DR>                  INNER JOIN TB_CPF CPF ON (CPJ.CPJ_CDCLII006 = CPF.CPJ_CDCLII006)
> DR> WHERE CRE.CRE_SERIEA003 = 'UNI'
> DR> AND CRE.CRE_SITUAA001 <> 6
> DR> AND CRE.EMP_CDEMPA003 = '001'     
> DR> AND CRE.CRE_DTVEND000 < (SELECT cast ('now' as timestamp) - 15 from rdb$database)
> DR> AND CRE.CRE_VLPAGN017 < CRE.CRE_VALORN017
> DR> AND CRE.CRE_EMFATA003 <> '1'
> DR> AND CPJ.CPJ_CCOEMA001 = 'S'
> DR> AND CRE.CRE_VALORN017 > 5
> DR> AND CRE.CPJ_CDCLII006 <>  85  
> DR> AND CPJ.SCL_CDOBSI003 NOT IN (3,6) 
> DR> );
> DR> -Ambiguous field name between table TB_CPJ and table TB_CRE and table TB_CPF
> DR> -CPJ_CDCLII006
>
>
> DR> Daniel Reis
>
>
> DR> ______________________________________________
> DR> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> DR> Para saber como gerenciar/excluir seu cadastro na lista, use:
> DR> http://www.firebase.com.br/fb/artigo.php?id=1107
> DR> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> 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
> ------------------------------------------------------------------------
>
>
> No virus found in this incoming message.
> Checked by AVG - http://www.avg.com 
> Version: 8.0.169 / Virus Database: 270.6.21/1668 - Release Date: 12/09/2008 06:56
>
>   




Mais detalhes sobre a lista de discussão lista