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

realizar una consulta if else o similar

Estas en el tema de realizar una consulta if else o similar en el foro de Mysql en Foros del Web. hola, tengo la siguiente tabla: clave ref modi nombre_modi contiene unos datos fijos: Código: clave ref modi nombre_modi 101 lo que sea 102 lo que ...
  #1 (permalink)  
Antiguo 07/06/2013, 14:16
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 11 años, 6 meses
Puntos: 23
realizar una consulta if else o similar

hola,

tengo la siguiente tabla:

clave
ref
modi
nombre_modi

contiene unos datos fijos:

Código:
clave	ref	modi	nombre_modi
		101	lo que sea
		102	lo que sea
		103	lo que sea
		104	lo que sea
		105	lo que sea
		106	lo que sea
		107	lo que sea
		108	lo que sea
		109	lo que sea
		110	lo que sea
1		111	lo que sea
1		112	lo que sea
1		113	lo que sea
1	11	114	lo que sea
1	12	115	lo que sea
1	13	116	lo que sea
1	13	117	lo que sea
1	13	118	lo que sea
1	13	119	lo que sea
1	13	120	lo que sea
1	14	121	lo que sea
ahora explico lo que necesito,

tengo 10 claves (1-10)

para las claves 2-10 debo mostrar los registros donde clave este vacia
para la clave 1 se deben mostrar todos los registros

como podria quedar mi condicion, yo pensaba en un if else, pero no me ha salido

esto probe, pero ni al caso:

Código MySQL:
Ver original
  1. SELECT IF(clave='1',modi IN ('101','102','103','todas las modi'), modi IN ('101','...','110')) FROM tabla

me salen ceros y unos, la verdad no tengo idea

ayuda por favor
  #2 (permalink)  
Antiguo 07/06/2013, 14:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 14 años
Puntos: 2658
Respuesta: realizar una consulta if else o similar

Cita:
IF(comparacion, valor si es TRUE, Valor si es FALSE)
El tema es que en lugar de poner un valor de salida, estás poniendo otra comparación en los ellos, por lo que vuelve a evaluar y devuelve 0 (FALSE), o 1 (TRUE).
¿Qué es lo que se supone quieres lograr con el IF?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/06/2013, 14:24
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 11 años, 6 meses
Puntos: 23
Respuesta: realizar una consulta if else o similar

que si me llega la clave = 1 muestre todos los registros, pero si me llega cualquier otra que no sea la 1, solo muestre los registros que no tengan clave vacia

por cierto, hola gnzsoloyo
  #4 (permalink)  
Antiguo 07/06/2013, 14:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 14 años
Puntos: 2658
Respuesta: realizar una consulta if else o similar

MySQL no cuenta con consultas condicionales, por lo que si no se puede resolver en el WHERE, deberás resolver la lógica en un stored procedure.
Dentro del SP sí se puede hacer lo que dices. Por fuera... No.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/06/2013, 18:24
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 11 años, 6 meses
Puntos: 23
Respuesta: realizar una consulta if else o similar

bueno creo que lo resolvere del lado de la programación. gracias
  #6 (permalink)  
Antiguo 08/06/2013, 04:08
 
Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 18 años, 3 meses
Puntos: 3
Respuesta: realizar una consulta if else o similar

Para cosas como esas están los procedimientos almacenados. Ahí si que tienes if else y muchas cosas mas. Con toda probabilidad lo harás mejor, mas rápido y con menos recursos que de cualquier otra manera.

Etiquetas: registros, select, similar, tabla
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 04:41.