Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Si el resultado es vacio desplegar un mensaje

Estas en el tema de Si el resultado es vacio desplegar un mensaje en el foro de SQL Server en Foros del Web. Que tal, Espero hacerme enterder con mi problema, tengo un query que me permite buscar el numero de cuenta de cada cliente, por ejemplo un ...
  #1 (permalink)  
Antiguo 20/01/2009, 10:20
 
Fecha de Ingreso: enero-2009
Mensajes: 4
Antigüedad: 16 años
Puntos: 0
Si el resultado es vacio desplegar un mensaje

Que tal,

Espero hacerme enterder con mi problema, tengo un query que me permite buscar el numero de cuenta de cada cliente, por ejemplo un cliente tiene 3 cuentas, otro tiene 2. Y existen por el momento 4 cuentas cuenta corriente, cuenta ahorros, inversiones y prestamos.

Asi que la persona 1 tiene CC, CA e Inversiones, la persona 2 tiene CC y CA, pero cada cuenta tiene su propia tabla y sus respectivos registros

La situación es que cuando quiero seleccionar una cuenta que no tiene una persona deseo que me salga un mensaje ya que al ejecutar el query no me aparece nada, trate de resolverlo con is null pero no resulto ya que no existe registro y por ende no es null, aqui esta un ejemplo

select ISNULL(cc.account,'NO POSEE CC) as CUENTA
from dbdata..cc CC join dbdata..customer cl on cc.customer = cc.customer where cc.customer = @id

Antes de este query tenia otro, pero quería optimizarle:

declare @valor int
IF(@tipoCuenta = 'CA')
BEGIN
select @valor=count(ca.account) from dbdata..ca CA where ca.customer = @id
IF(@valor > 0)
select ca.account as CUENTA from dbdata..ca CA where ca.customer = @id
ELSE
select 'NO POSEE CA' as CUENTA

Puede alguien darme una idea????

Última edición por stvan; 20/01/2009 a las 12:19
  #2 (permalink)  
Antiguo 20/01/2009, 14:08
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Si el resultado es vacio desplegar un mensaje

Intenta con IF EXISTS(SELECT ....................................)

O bien, IF NOT EXISTS(SELECT..................................... .....)
  #3 (permalink)  
Antiguo 20/01/2009, 14:33
 
Fecha de Ingreso: enero-2009
Mensajes: 4
Antigüedad: 16 años
Puntos: 0
Respuesta: Si el resultado es vacio desplegar un mensaje

listo, entonces si no existe despliego mi mensaje, pero si existe quiero que el valor del select se despliegue en el caso contrario, algo asi

declare @valor varchar(10)
if not exists(select id from table where id='value')
select 'bad' as cuenta
else
select 'ok' as cuenta

-- Pero en vez de ok quisiera el valor de ese id pero sin ejecutar otro query y poner en una
-- variable y que quede algo asi SELECT @valor AS CUENTA, donde @valor tiene el id que si existe
  #4 (permalink)  
Antiguo 20/01/2009, 19:52
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Si el resultado es vacio desplegar un mensaje

No puedes dejar de hacer otro select y como mera observacion, si el resultado lo va a recibir un recordset en tu "cliente", entonces deberian ser del mismo tipo (el valor devuelto), por tanto, o regresas un 0 (cero) cuando no exista, o el valor que le corresponde.
  #5 (permalink)  
Antiguo 21/01/2009, 08:53
 
Fecha de Ingreso: enero-2009
Mensajes: 4
Antigüedad: 16 años
Puntos: 0
Respuesta: Si el resultado es vacio desplegar un mensaje

Estaría bien realizar algo así?

declare @valor, @exist varchar(15)
select @valor=count(CA.account), @exist=CA.account from ca CA where CA.customer = @id group by CA.account
IF(@valor > 0)
select @exist as CUENTA
ELSE
select 'NO POSEE CUENTA AHORROS' as CUENTA

Ademas no consumiria mas recursos ya que solo hago una consulta y almaceno los valores en variables, claro que esto deberia hacer para cada tipo de cuenta
  #6 (permalink)  
Antiguo 21/01/2009, 22:14
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: Si el resultado es vacio desplegar un mensaje

Funcionaria, no creo que sea lo mas optimo.........
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:58.