[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