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

[SOLUCIONADO] Cambiar Nombres si es Null

Estas en el tema de Cambiar Nombres si es Null en el foro de Mysql en Foros del Web. Muy buenos días apreciados Ingenieros Tengo la siguiente duda como hago para Utilizar el case de sql para campos que tienen valor Null @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 13/11/2013, 07:18
 
Fecha de Ingreso: octubre-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 0
Cambiar Nombres si es Null

Muy buenos días apreciados Ingenieros
Tengo la siguiente duda
como hago para Utilizar el case de sql para campos que tienen valor Null
Código MySQL:
Ver original
  1.  
  2.  CASE id_ser WHEN 69 THEN 'Maria'
  3.              WHEN 46 THEN 'Margarita'
  4.              
  5.   END AS  Nombres,
  6.  
  7. CASE fecha_Salida_Almuerzo WHEN fecha_Salida_Almuerzo IS NULL THEN 'NO REGISTRA' # No me muestra esto
  8.                              ELSE
  9.                               fecha_Salida_Almuerzo
  10.   END AS SALIDAALMUERZO, ##Columna Agregada
  11.  
  12. FECHA,
  13. fecha_entrada,
  14. fecha_Salida_Almuerzo,
  15. fecha_Entrada_Almuerzo,
  16. fecha_salida,
  17. Fecha_Ultimo_Registro
  18.  
  19.    
  20.  FROM EVENTOS WHERE FECHA BETWEEN '2013-11-01' AND '2013-11-12'
  21.   AND ID_SER IN (69,46)
  22.   ORDER  BY ID_SER,FECHA  ASC


El Problema es que en la columna agregada en los campos que son Null
no me muestra el Mensaje 'NO REGISTRA'


de antemano quedo muy agradecido por su atención y Orientación

Cordialmente
Ing Beimar Trujillo

Última edición por gnzsoloyo; 13/11/2013 a las 07:53
  #2 (permalink)  
Antiguo 13/11/2013, 07:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Cambiar Nombres si es Null

Código MySQL:
Ver original
  1.     IF(id_ser = 69, 'Maria', 'Margarita') Nombres,
  2.     IFNULL(fecha_Salida_Almuerzo, 'NO REGISTRA') SALIDAALMUERZO
  3.     FECHA,
  4.     fecha_entrada,
  5.     fecha_Salida_Almuerzo,
  6.     fecha_Entrada_Almuerzo,
  7.     fecha_salida,
  8.     Fecha_Ultimo_Registro
  9. FROM EVENTOS
  10.     FECHA BETWEEN '2013-11-01' AND '2013-11-12'
  11.     AND ID_SER IN (69,46)
  12. ORDER BY ID_SER,FECHA ASC

Los CASE son siempre una mala idea, salvo contadísimas excepciones.
__________________
¿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 13/11/2013, 08:27
 
Fecha de Ingreso: octubre-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 0
Respuesta: Cambiar Nombres si es Null

Hola gnzsoloyo Muchas gracias por Responder tan Rapido

Mira me quedo así, y Perfecto Funciona de maravilla

Una ultima pregunta como lo harias sin son varios id_ser
Digamos 7, 69 ,46 ,1, 2, 33, 44, 88
Harias tantos if como id_ser existan ?


Código MySQL:
Ver original
  1.       IF(id_ser = 69, 'Maria ','Ana ') Nombres,
  2.          FECHA,
  3.                 TIME(fecha_entrada) AS ENTRADA,
  4.                     IFNULL(fecha_Salida_Almuerzo, 'NO REGISTRO') AS 'SALIDA ALMUERZO',
  5.                          IFNULL(fecha_Entrada_Almuerzo, 'NO REGISTRO') AS 'ENTRADA ALMUERZO',  
  6.                                IFNULL( fecha_salida, 'NO REGISTRO') AS 'SALIDA',  
  7.                                      TIME( Fecha_Ultimo_Registro) AS 'ULTIMO REGISTRO'
  8. FROM EVENTOS
  9. WHERE FECHA
  10. BETWEEN '2013-11-01' AND '2013-11-12'
  11. #AND ID_SER IN (69,46)
  12. ORDER BY ID_SER,FECHA ASC

de antemano muchas gracias Nuevamente por tu Orientacion

Cordial saludo
Beimar Trujillo
desde Bogota Colombia

Última edición por gnzsoloyo; 13/11/2013 a las 09:46
  #4 (permalink)  
Antiguo 13/11/2013, 08:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Cambiar Nombres si es Null

Para ese caso te conviene hacer un JOIN contra la tabla donde puedan registrarse los nombres (qué no sé si son clientes o empleados), ya que no tiene ningún sentido almacenar un dato así en la misma tabla de eventos.
AL menos eso sería lo correcto.
__________________
¿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 13/11/2013, 09:18
 
Fecha de Ingreso: octubre-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 0
Respuesta: Cambiar Nombres si es Null

Hola gnzsoloyo si efectivamente tengo una tabla que se llama personas
y ahy tengo a todo el Mundo llamese proveedor,Cliente,Empleado
Segun la POO son personas y es mi clase personas

Tengo la tabla Personas donde almaceno
id_ser que es un int autoincrement
Documento varchar (50)
Nombres Varchar (50)


y se relaciona con la tabla EVENTOS que es donde se registran las personas por medio de su Huella
Tengo un SP que evalua el tipo de marcacion y de acuerdo a la logica de Negocio de la persona

el determina en que parte de la fila poner el registro

si en EntradaLaborar, o salida_almuerzo,o entradaAlmuerzo o salidaLaboral


El PROBLEMA surge porque hay personas que en su logica de NEGOCIOS
Deben hacer las 04 marcaciones y solo me hacen una marcacion o 2
entonces en los calculos de tiempo no me sale los valores esperados

Entonces ahora la Gerencia me pide que le envie los usuarios
que no marcaron en un rango de fechas

y efectivamente los puedo sacar
pero pues para la Gerencia no puedo entregar un informe donde se evidencia CAMPOS NULL

Por lo mismo me toca formatear ese campo diciendo CAMBIANDO EL NULL por otro valor

y como tu lo hiciste funciona perfecto para 02 Personas

pero en mi caso tengo 3000 Personas id_ser


de antemano muchas gracias por su colaboración
y Orientación

Cordial saludo
Beimar Trujillo
  #6 (permalink)  
Antiguo 13/11/2013, 09:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Cambiar Nombres si es Null

La lógica es la misma, solo que cruzando ambas tablas:
Código MySQL:
Ver original
  1.     E.id_ser
  2.     P.Nombre Nombres,
  3.     FECHA,
  4.     fecha_entrada,
  5.     IFNULL(E.fecha_Salida_Almuerzo, 'NO REGISTRA') SALIDAALMUERZO
  6.     IFNULL(E.fecha_Entrada_Almuerzo, 'NO REGISTRA') ENTRADALMUERZO
  7.     IFNULL(E.fecha_salida, 'NO REGISTRA') Salida,
  8.     E.Fecha_Ultimo_Registro
  9. FROM EVENTOS E INNER JOIN Personas P ON E.id_ser = P.id_ser
  10.     FECHA BETWEEN '2013-11-01' AND '2013-11-12'
  11. ORDER BY ID_SER,FECHA ASC;

Obviamente, estoy suponiendo que tu sistema registra los eventos en un mismo registro. De lo contrario se be hacer todo un proceso y eventualmente algun ajuste de consulta spara lograrlo.
Entiendo perfectamente tu problema porque un sistem aparecido a ese es el que usa nuestra empresa, y tiene precisamente el mismo tipo de inconveniente.
En nuestro caso se solucionó permitiendo que el usuario agregue correcciones (que no borran la información), tal que permita hacer ajustes para eventos no detectados.
Como tood eso luego pasa a aprobación superior, los ajustes (que están parametrizados en su causales), sobn responsailidad de cada empelado. Si miente... es su problema. No del ssitema.
__________________
¿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 13/11/2013, 10:30
 
Fecha de Ingreso: octubre-2013
Mensajes: 34
Antigüedad: 11 años
Puntos: 0
Respuesta: Cambiar Nombres si es Null

Hola gnzsoloyo Muchas gracias por tu colaboración
me funciona perfecto

Código MySQL:
Ver original
  1.     E.id_ser,
  2.     P.Nombres  AS 'Nombres' ,
  3.     FECHA,
  4.     fecha_entrada,
  5.                      IFNULL(E.fecha_Salida_Almuerzo, 'NO REGISTRO  SALIDA ALMUERZO')  AS       'SALIDAALMUERZO',
  6.                                         IFNULL(E.fecha_Entrada_Almuerzo, 'NO REGISTRO ENTRADA ALMUERZO') AS 'ENTRADALMUERZO',
  7.                                                    IFNULL(E.fecha_salida, 'NO REGISTRO SALIDA LABORAL')  AS 'Salida',
  8.                                                                      E.Fecha_Ultimo_Registro
  9.     FROM EVENTOS E INNER JOIN Personas P
  10.     ON E.id_ser = P.id_ser
  11.     WHERE   FECHA BETWEEN '2013-11-01' AND '2013-11-12'
  12.     ORDER BY ID_SER,FECHA ASC;



Dios todopoderoso te Bendiga mucho
Gracias a ti he aprendido un mundo de cosas de Mysql

Cordial saludo
Beimar Trujillo
Desde Bogota Colombia

Etiquetas: campo, nombres, null, registro, select, sql
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 13:48.