Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Sql Y If Else (https://www.clubdelphi.com/foros/showthread.php?t=45670)

abraham 10-07-2007 23:53:59

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,

jhonny 11-07-2007 00:04:32

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.

Caral 11-07-2007 00:07:23

Hola
Estas seguro jhonny ?
Me parece que no camina la sentencia IIF en FireBird, se usa case.
Repito Me parece.
Saludos

jhonny 11-07-2007 00:11:10

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


Caral 11-07-2007 00:15:18

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.

jhonny 11-07-2007 00:18:15

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?

Caral 11-07-2007 00:23:01

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

jhonny 11-07-2007 00:26:21

Cita:

Empezado por Caral
todos los dias se aprende algo nuevo.

Tengo que confesar que no son mis palabras, son las de mi esposa :D. Cuando lo pruebes de nuevo me cuentas como te fue, pues no es normal que a ti no te funcione y a mi si.

Caral 11-07-2007 00:33:04

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

abraham 11-07-2007 00:47:51

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,

jhonny 11-07-2007 15:07:41

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 ;).

abraham 11-07-2007 16:09:28

me gusta el sql , quien sabe donde encuentro manuales de sql avanzado
 
algien me puede ayudar con el sql else

jhonny 11-07-2007 18:14:42

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.

abraham 11-07-2007 23:50:15

muchisimas gracias por el procedure
 
Realmente sql if ,then o case
en sql interbase no existe ,
osea una linea sql.

jhonny 12-07-2007 00:08:54

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¡¡¡ :D

Delfino 12-07-2007 19:49:44

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..

Patricio 21-01-2008 15:34:13

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


La franja horaria es GMT +2. Ahora son las 14:04:23.

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