Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-07-2007
abraham abraham is offline
No confirmado
 
Registrado: jul 2007
Posts: 27
Poder: 0
abraham Va por buen camino
Sql Y If Else

Hola programadores, emosionados por los Codigos,
En el dia de hoy necesito una consulta de todos ustedes,


Necesito saber si puedo realizar un Sql, en donde incluya IF ELSE
OK.
ESPERO SU PRONTA AYUDA
EJ:
SI EL TIPO ES 1/0
SI ES UNO Q MUESTRE EL CAMPO VALOR
SI ES CERO Q MUESTRE EL CAMPO PORCENTAJE

GRACIAS,
Responder Con Cita
  #2  
Antiguo 11-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
En FireBird 2.0 podrías hacer uso de la sentencia IIF, ¿Que motor estas usando?, deberías de aclararnos un poco mas el asunto.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 11-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Estas seguro jhonny ?
Me parece que no camina la sentencia IIF en FireBird, se usa case.
Repito Me parece.
Saludos
Responder Con Cita
  #4  
Antiguo 11-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Caral
Hola
Estas seguro jhonny ?
Me parece que no camina la sentencia IIF en FireBird, se usa case.
Repito Me parece.
Saludos
Bueno, esto es lo que dice la documentación del FireBird 2.0

Cita:
--------------------
IIF builtin function
--------------------
Function:
Return a value of the first sub-expression if the given search condition
evaluates to TRUE, otherwise return a value of the second sub-expression.

Author:
Oleg Loa <loa@mail.ru>

Format:
IIF ( <search condition>, <value expression>, <value expression> )

Syntax Rule(s):
IIF (SC, V1, V2) is equivalent to the following <case specification>:
CASE WHEN SC THEN V1 ELSE V2 END

Example(s):
SELECT IIF(VAL > 0, VAL, -VAL) FROM OPERATION
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 11-07-2007 a las 00:14:11.
Responder Con Cita
  #5  
Antiguo 11-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Cuando intente cambiar una consulta en access en la que si funciona el IIF, me salieron todos los errores en firebird, no tuve mas remedio que solicitar al club ayuda para hacerla con case when.
A mi no me funciono IIF, por eso el comentario.
Saludos.
Responder Con Cita
  #6  
Antiguo 11-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Caral
Hola
Cuando intente cambiar una consulta en access en la que si funciona el IIF, me salieron todos los errores en firebird, no tuve mas remedio que solicitar al club ayuda para hacerla con case when.
A mi no me funciono IIF, por eso el comentario.
Saludos.
Acabe de hacer la siguiente prueba:

Código SQL [-]
select iif(consec=4, consec, tipo) from kardex

Y me funciono muy bien , ¿Seguro que estabas usando la Versión 2 de FireBird?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #7  
Antiguo 11-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Pues si, la version 2, no me digas que me he roto la cabeza para nada.
Por mas que lo intente de todas las maneras, no pude, bueno, tambien la experiencia cuenta.
Bueno, usando tus palabras, todos los dias se aprende algo nuevo.
En cuanto lo vuelva a instalar, lo pruebo.
Saludos
Responder Con Cita
  #8  
Antiguo 11-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por Caral
todos los dias se aprende algo nuevo.
Tengo que confesar que no son mis palabras, son las de mi esposa . Cuando lo pruebes de nuevo me cuentas como te fue, pues no es normal que a ti no te funcione y a mi si.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #9  
Antiguo 11-07-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Y es un caso curioso, mucha de la sentencia que manejo en access contiene IIF, y ese a sido uno de los problemas que he tenido a la hora de tratar de cambiar de base de datos.
Bueno, sera intentarlo de nuevo, ya te tendre informado, mas bien, muchas gracias por la explicacion, ya ves, aqui se aprende de lo que preguntan otros, no hace falta ni preguntar.
Saludos
Responder Con Cita
  #10  
Antiguo 11-07-2007
abraham abraham is offline
No confirmado
 
Registrado: jul 2007
Posts: 27
Poder: 0
abraham Va por buen camino
Abraham Y Su Sql If Then

Cita:
Empezado por abraham
Hola programadores, emosionados por los Codigos,
En el dia de hoy necesito una consulta de todos ustedes,


Necesito saber si puedo realizar un Sql, en donde incluya IF ELSE
OK.
ESPERO SU PRONTA AYUDA
EJ:
SI EL TIPO ES 1/0
SI ES UNO Q MUESTRE EL CAMPO VALOR
SI ES CERO Q MUESTRE EL CAMPO PORCENTAJE

GRACIAS,
-----------------
COMPAÑEROS EL MOTOR DE BASE DE DATO QUE UTILIZO ES : INTERBASE 6.0,
Responder Con Cita
  #11  
Antiguo 11-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por abraham
-----------------
COMPAÑEROS EL MOTOR DE BASE DE DATO QUE UTILIZO ES : INTERBASE 6.0,
Ahhh bueno, en ese caso no conozco algo como el iif en Interbase 6.0, aunque puedes crear o montar una UDF que lo haga o si lo prefieres un procedimiento almacenado que reemplace dicho funcionamiento. Pero eso, si es estrictamente necesario que uses Interbase, de lo contrario aun existe la posibilidad de que migres a FireBird facilmente.

Nota: Por favor, no escribas en mayúsculas, pues no es bien visto, ya que significa gritar y además no es muy legible que digamos .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #12  
Antiguo 11-07-2007
abraham abraham is offline
No confirmado
 
Registrado: jul 2007
Posts: 27
Poder: 0
abraham Va por buen camino
me gusta el sql , quien sabe donde encuentro manuales de sql avanzado

algien me puede ayudar con el sql else
Responder Con Cita
  #13  
Antiguo 11-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por abraham
algien me puede ayudar con el sql else
Bueno, como ya te había comentado, puedes usar un procedimiento almacenado, un ejemplo es el siguiente:
Código SQL [-]
 
CREATE PROCEDURE Retorna_Valor (
    TIPO INTEGER,
    VALOR NUMERIC(15,2),
    PORCENTAJE NUMERIC(15,2))
RETURNS (
    TOTAL NUMERIC(15,2))
AS
begin
  if (:tipo is not null) then
  begin
    if (:tipo = 0) then
      total = :porcentaje;
     else
       if (:tipo = 1) then
         total = :valor;
  end
  suspend;
end

Para usarlo bastaría con incluirlo en una consulta sql, como la siguiente, por ejemplo:
Código SQL [-]
 
select (select total from Retorna_Valor(tipo, Valor, porcentaje)) as Retorno from Tabla_que_contiene_dichos_valores

Espero me haya hecho entender y que te sirva de algo.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #14  
Antiguo 11-07-2007
abraham abraham is offline
No confirmado
 
Registrado: jul 2007
Posts: 27
Poder: 0
abraham Va por buen camino
muchisimas gracias por el procedure

Realmente sql if ,then o case
en sql interbase no existe ,
osea una linea sql.
Responder Con Cita
  #15  
Antiguo 12-07-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por abraham
Realmente sql if ,then o case
en sql interbase no existe ,
osea una linea sql.
La verdad es que si, pero solo funcionan en procedimientos almacenados como el que te mostré, pero para este tipo de consultas no. Por ese y otro tipo de cosas te recomiendo pasarte a FireBird.

Nota: Te pido un favor y a la vez te doy un consejo; Debes ser un mas descriptivo, para poder que no nos matemos el coco tratando de decifrar lo que quieres decir . Bienvenido al ClubDlephi¡¡¡
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 12-07-2007 a las 00:13:34.
Responder Con Cita
  #16  
Antiguo 12-07-2007
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
Cita:
En cuanto lo vuelva a instalar, lo pruebo.
Acabo de probarlo y para mi gran sorpresa funciona perfectamente,

lo q no se es si es una funcion añadiad en alguna UDF o pertenece al SQL de Firebird..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #17  
Antiguo 21-01-2008
Patricio Patricio is offline
Miembro
 
Registrado: jul 2004
Posts: 433
Poder: 20
Patricio Va por buen camino
Smile pasar de interbase a firebird

Hola, yo utilizo interbase 6.0 y encontre algunas cosas y sugerencias de varios de ustedes para pasar a Firebird. Mi consulta es:
es facil hacer el cambio? alguien lo hizo? hay cosas que pueden no funcionar? que pasos tendria que seguir para hacerlo...
espero se entienda lo que consulto, muchas gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:03:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi