Exists no Interbase

Firebird

21/08/2003

Galera, eu sei que existe um jeito em SQL de fazer um if para ver se existem dados em uma determinada select. Mas não sei a sintax e nem se o IB aceita. Queria algo como:

SELECT
NOMEBANCO,
(SELECT MAX(PKPARCE_ALUNOS) FROM PARCE_ALUNOS) AS PKPARCE,
IF EXISTS(SELECT CADASTRO FROM PARCE_ALUNOS WHERE CADASTRO=´001002481´) alguma coisa.
FROM
BANCO


Adriano Santos

Adriano Santos

Curtidas 0

Respostas

Afarias

Afarias

21/08/2003

o comando IF só está disponível em STORED PROCEDURES e TRIGGERS, o EXISTS pode ser usado com IF ou na cláusula WHERE de um SELECT.

exemplo::

select * from tabela1 where exists (select 1 from tabela2 where tabela2.codigo = tabela1.codigo)


T+


GOSTEI 0
Adriano Santos

Adriano Santos

21/08/2003

Não tem nenhum forma de exists na select? mesmo sem IF???


GOSTEI 0
Afarias

Afarias

21/08/2003

Não, só na cláusula WHERE do comando SELECT.

Más, o q vc quer fazer afinal?!? Pode ser q seja possível de outra forma.


T+


GOSTEI 0
Adriano Santos

Adriano Santos

21/08/2003

Seria algo como;

Select Valor1, Valor2, ´IF´ Exists(Select ID FROM CONTROLE WHERE CONTROLE > 5) as XXX ´THEN TRAZ O CAMPO YYYY´ From Banco

ou seja, se existir um determinado tipo de registro na tabela controle então a select traz o campo YYYY senão não traz, sei que é absurdo, mas é mais ou menos isso.


GOSTEI 0
Afarias

Afarias

21/08/2003

não existe relação entre a tabela Banco e Controle ??

Bom, vc pode fazer isso facilmente com StoredProcedure ou talvês (não sei se entendi bem) provavelmente com uso do CASE se estiver usando FB 1.5

Sendo q o campo não deixaria de existir, apenas poderia ser colocado NULO.

Para realmente ´RETIRAR´ a coluna, vc deverá verificar a condição e alterar o SQL no cliente.


T+


GOSTEI 0
Fabiocarige

Fabiocarige

21/08/2003

Em vez de usar o Select puro.
Construa uma stored procedure que retorne os mesmos valores que o Select que iria usar. Desta forma vc poderá usar a clausula EXISTS.

Outra forma seria colocar o SELECT com as clausulas Restritivas em uma Query. E no delphi fazer:
IF QUERY.RECORDCOUNT >0 THEN
//O Select Retornou valor logo o Registro Existe.
ELSE
//O Registro não existe.


GOSTEI 0
POSTAR