Exists no Interbase
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
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
Curtidas 0
Respostas
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+
exemplo::
select * from tabela1 where exists (select 1 from tabela2 where tabela2.codigo = tabela1.codigo)
T+
GOSTEI 0
Adriano Santos
21/08/2003
Não tem nenhum forma de exists na select? mesmo sem IF???
GOSTEI 0
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+
Más, o q vc quer fazer afinal?!? Pode ser q seja possível de outra forma.
T+
GOSTEI 0
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.
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
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+
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
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.
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