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

Query + if else end if

Estas en el tema de Query + if else end if en el foro de Mysql en Foros del Web. tengo una pequeña duda...como puedo implementar un if dentro de una consulta select... esta es mi QUERY: Código: select DATE_FORMAT(concat(year(now()),'-',month(now()),'-',01),'%Y-%m-%d') as fecha, fecha, tipo, documento, ...
  #1 (permalink)  
Antiguo 09/07/2009, 14:30
 
Fecha de Ingreso: junio-2009
Ubicación: Lima
Mensajes: 84
Antigüedad: 14 años, 10 meses
Puntos: 1
Query + if else end if

tengo una pequeña duda...como puedo implementar un if dentro de una consulta select...

esta es mi QUERY:

Código:
     select DATE_FORMAT(concat(year(now()),'-',month(now()),'-',01),'%Y-%m-%d') as fecha,

          fecha,
          tipo,
          documento,
          cantidad,
          precio_costo,
          precio_compra,
          precio_venta,

          if tipo='entrada'  then

          (cantidad + (SELECT stock_actual FROM tagn_kardex WHERE idproducto = '1'
           AND month(fecha) = DATE_FORMAT(CURDATE(),'%m') - 1
           ORDER BY fecha DESC LIMIT 1))          as saldo_cantidad,

          (precio_compra + (SELECT precio_compra FROM tagn_kardex WHERE idproducto = '1'
           AND month(fecha) = DATE_FORMAT(CURDATE(),'%m') - 1
           ORDER BY fecha DESC LIMIT 1))          as saldo_precio_total

       end if;

   from tagn_kardex
   where idproducto='1' AND month(fecha) = DATE_FORMAT(CURDATE(),'%m');

el campo TIPO puede ser o 'entrada' o 'salida' como puedo hacer ese if? siempre me saler un error en la linea donde comienza el if
  #2 (permalink)  
Antiguo 09/07/2009, 14:38
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Query + if else end if

En el manual puedes revisar la sintaxis correcta de IF():
http://dev.mysql.com/doc/refman/5.0/...functions.html

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 09/07/2009, 14:42
 
Fecha de Ingreso: junio-2009
Ubicación: Lima
Mensajes: 84
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Query + if else end if

esa guia ya la revise...pero la verdad que tampoco asi salio...estoy usando el Mysql Query Browser
  #4 (permalink)  
Antiguo 09/07/2009, 15:14
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Query + if else end if

Lo que tienes, nada se parece a la sintaxis manejada por mysql en el manejo de IF en sentencias select.

Cita:
IF(expr1,expr2,expr3)

Si expr1 es TRUE (expr1 <> 0 and expr1 <> NULL) entonces IF() retorna expr2; de otro modo retorna expr3. IF() retorna un valor numérico o cadena de caracteres, en función del contexto en que se usa.

mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'
Si sólo una de expr2 o expr3 es explícitamente NULL, el tipo del resultado de la función IF() es el mismo tipo que la expresión no NULL .

expr1 se evalúa como un valor entero, que significa que si esta testeando valores de punto flotante o cadenas de caracteres, debe hacerlo mediante operaciones de comparación.

mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1
--Tomado de El enlace que david te comparte

Trata de acoplar tu consulta con este formato. Recuerda que IF se compone de una condición, una parte verdadera y una parte falsa.

Un saludo.

Como vas david?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 09/07/2009, 15:22
 
Fecha de Ingreso: junio-2009
Ubicación: Lima
Mensajes: 84
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Query + if else end if

chevere ya se como hacerlo...gracias =)
  #6 (permalink)  
Antiguo 09/07/2009, 15:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Query + if else end if

La sentencia condicional IF .. THEN ... ELSE, opera en los stored procedures, no en las sentencias.
Lo que estás planeando mal es que la consulta que realizas debe realizarse con JOINS.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 01/03/2012, 10:29
 
Fecha de Ingreso: junio-2011
Ubicación: TRUJILLO
Mensajes: 2
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Query + if else end if

TENGO ESTA funcion en kUsuarios.php
function perfilUsuario($idPersonal){
$link = conectar();
$sql = "select distinct p.esAdministrador,(select count(1) from cargo where IdCargo = p.IdCargo and IdCargo = 1) as esDoctor
from personal p where p.idPersonal = $idPersonal";
$res = ejecutaConsulta($sql, $link);
$data = obtenerConsulta($res);
cerrarConexion($link);
return $data;
}
Y en mi otro archivo frmExamen.php le consulto si es Doctor, entonces se active o muestre el boton Finalizar
$verFin = 0;
if( $perfil['esDoctor']==1 ):
$verFin = 1;
endif;
<? if($verFin ==1): ?>
<input type="button" value="Finalizar" name="btnFinalizar" class="Btn" onclick="finalizar()"/>
<? endif; ?>

QUE ME AYUDEN parael caso en q sea Ginecolo o Obstetra o Tecnico, para ello no creo q seria bueno crearme 4 funciones, PIENSO q seria crearme una sola FUNCION en donde reciba idPersonal y idCargo
function perfilUsuario($idUsuario, $idCargo){
$link = conectar();
$sql = "select distinct esAdministrador,
if $idCargo = 4 as esOdontologo;
elseif $idCargo = 5 as esPsicologo;
else $idCargo = 1 as esMedico;
end if;
end if;
from personal where idPersonal = $idPersonal and IdCargo = $idCargo";
$res = ejecutaConsulta($sql, $link);
$data = obtenerConsulta($res);
cerrarConexion($link);
return $data;
}
mi Tabla tiene los campos: SELECT idPersonal, dni, nombre, apePaterno, apeMaterno, esAdministrador, IdCargo FROM personal;
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 18:39.