Update com join

Tenho um titulo com campo cdempresa, baixa com campo cdempresa.

O cdempresa em titulo é a empresa dona no titulo, do baixa não necessariamente é a empresa dona, pois pode ocorrer de outra empresas pagar este título (onde chamamos de mútuo, já esta na regra de negócio, não posso mudar)

Tenho que fazer um update na baixa, mas somente quando o título for da empresa que passarei.
Tentei fazer assim:

update ecpgbaixa
set ecpgbaixa.dtcontabil = ecpgbaixa.dtpagto
where ecpgbaixa.dtcontabil is null
and ecpgbaixa.dtpagto > '2010.7.22'
and ecpgtitulo.nutitulo = ecpgbaixa.nutitulo
and ecpgtitulo.cdempresa = 7;
commit;

Mas não deu certo, ocorre o seguinte erro:

[code]
The next statement causes the following error:

Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
ECPGTITULO.NUTITULO.
At line 5, column 16.

[code]

Estou utilizando firebird, mas tenho que deixar de forma que possa ser rodado em qualquer banco.
Pergunta. Tem como fazer o que estou tentando?

EDIT

Antes que alguem comente, já pesquisei e não encontrei minha resposta, somente update em duas tabelas simultaneas.

tenta algo assim

UPDATE ecpgbaixa eb SET eb.dtcontabil = eb.dtpagto 
		WHERE (Select 1 From ecpgtitulo et  
				where eb.dtcontabil is null  
				and eb.dtpagto > '2010.7.22'  
				and et.nutitulo = eb.nutitulo  
				and et.cdempresa = 7)  

Neste meio tempo tentei isso, mas não rola.

da msg

The next statement causes the following error: 

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command - line 6, column 37.

[quote=avsouza]Neste meio tempo tentei isso, mas não rola.

da msg

The next statement causes the following error: 

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command - line 6, column 37.

[/quote]

Vc tentou o mesmo sql que passei? Ou tentou outro parecido?

Testei o que vc passou tb.
Dá a msg acima

Tenta fazer um cast na sua string de data!

Qual o banco de dados que vc usa?

Firebird, mas não posso me focar somente nele, pois alguns clientes usarão sqlserver (ja resportado pra nós) mas pode aparecer outro dizendo que vai usar oracle p.e.

esse erro de token, informa que tem algum simbolo ou caracter inválido na consulta.

Esse modelo de consulta funciona em qualquer banco, não tem nada de especial.

Tem que ver se na hora de executar, não precisa colocar um ponto e virgula no final, depois dos parenteses, ou no retirar um ponto e virgula.

Coloca a consulta que vc executou que gerou esse erro SQL error code = -104, assim fica melhor de identificar.

o erro aconteceu com a sua consulta

Conforme essa mensagem Unexpected end of command - line 6, column 37. tem alguma coisa na consulta que o banco não está reconhecendo, como já citei, um caracter ou até mesmo um espaço em branco pode ser.

Esse update vc está fazendo direto no gerenciador do banco ou está executando pela aplicação ?

Direto pelo gerenciador, ja tentei com e sem o “;”.

Com ; da essa msg Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 6, column 38. ;.

sem ;

da essa Invalid token. Dynamic SQL Error. SQL error code = -104. Unexpected end of command - line 6, column 37.

Seguinte, esse 1° Sql que te passei funciona no MySql, foi onde eu tinha testado ele.

Chegando em casa, testei no InterBase e gerou o mesmo erro que apresentou para vc no FireBird.

Então mudei o Sql, e passou a funcionar no MySql e no InterBase, testa agora pra ver se funciona ok.

UPDATE ecpgbaixa eb SET eb.dtcontabil = eb.dtpagto 
	WHERE EXISTS (Select 1 From ecpgtitulo et  
				where eb.dtcontabil is null  
				and eb.dtpagto > '2010.7.22'  
				and et.nutitulo = eb.nutitulo  
				and et.cdempresa = 7)

Blz, rolou, vou aproveitar a ideia e adaptar para o sqlserver.

vlw

EDIT:

no maldito sqlserver fica assim (por causa do alias):

UPDATE eb SET eb.dtcontabil = eb.dtpagto from ecpgbaixa eb 
	WHERE EXISTS (Select 1 From ecpgtitulo et  
				where eb.dtcontabil is null  
				and eb.dtpagto > '2010.7.22'  
				and et.nutitulo = eb.nutitulo  
				and et.cdempresa = 7)