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

Ignorar consulta si un campo es 0000-00-00

Estas en el tema de Ignorar consulta si un campo es 0000-00-00 en el foro de Mysql en Foros del Web. Hola a todos... Tengo una BD con los siguientes campos: Apellido, Nombre, Nacimiento, Fallecimiento y hago la consulta para que me dé la siguiente informacion ...
  #1 (permalink)  
Antiguo 29/11/2006, 08:40
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Ignorar consulta si un campo es 0000-00-00

Hola a todos...
Tengo una BD con los siguientes campos: Apellido, Nombre, Nacimiento, Fallecimiento y hago la consulta para que me dé la siguiente informacion correspondiente al mes en curso:
Apellido, Nombre, Nacimiento, Fallecimiento, Años (cuanto hace que murió), Edad (edad al fallecer).
Ahora bien, en algunos campos no tengo la fecha de nacimiento, cuyo formato es 0000-00-00, por lo tanto cuando calcula la Edad de Fallecimiento me muestra el año de Fallecimiento.
Entonces lo que quiciera saber es si hay forma de ignorar la Edad de fallecimiento cuando el campo Nacimiento es 0000-00-00.

Consulta:

$result=mysql_query("select Apellido,Nombre,DATE_FORMAT(Nacimiento,'%d-%m-%Y')AS Nacimiento,DATE_FORMAT(Fallecimiento,'%d-%m-%Y')AS Fallecimiento,(YEAR(CURRENT_DATE) - YEAR(Fallecimiento)) - (RIGHT(CURRENT_DATE,5) < RIGHT(Fallecimiento,5)) AS Años,(YEAR(Fallecimiento) - YEAR(Nacimiento)) - (RIGHT(Fallecimiento,5) < RIGHT(Nacimiento,5)) AS Edad,Url from listape where MONTH(Fallecimiento)=MONTH(CURDATE()) ORDER BY fallecimiento ASC",$link);

Gracias y saludos!!!
  #2 (permalink)  
Antiguo 30/11/2006, 12:16
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
¿Un simple WHERE fallecimiento <> '0000-00-00' no te funciona?

Muevo tu pregunta al foro de MySQL
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 30/11/2006, 17:48
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Gracias Mithrandir por responder...

Lo que pasa, es que de esa forma que me dices, no me presenta ningún dato... Lo que necesito es que si la fecha de Nacimiento es 0000-00-00, en Edad me ponga 0 ó no me ponga nada, por que de lo contrario me pone el año de fallecimiento, como en el ejemplo que pongo debajo.
Al referirme con ignorar la consulta me refiero solamente a Edad de fallecimiento, pero que el resto de la información aparezca.

[Apellido] [Nombre] [Nacimiento] [Fallecimiento] [Años falleci.] [Edad]
[Pepe....].[Pepe...]..[0000-00-00].[25-11-1927]..[.......79......]..[1927]

No se si me explico adecuadamente?
Muchas Gracias por ayudarme!!!
  #4 (permalink)  
Antiguo 01/12/2006, 02:14
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Prueba con un if de la siguiente manera

Código:
SELECT 
IF (
STRCMP(
'0000-00-00', fallecimiento
), ' aun no', fallecimiento
),
campo1,
campo 2

FROM tabla
De esta forma coge todos tus registros (los filtras como quieras) y si la fecha de fallecimiento no es 0000-00-00 la pinta sino pinta el mensaje que quieras (en este caso "aun no")

Un saludo
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #5 (permalink)  
Antiguo 01/12/2006, 12:22
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Gracias por responder Lord of freaks

En la forma que yo hago la consulta, cómo tendría que insertar lo que tu me aconsejas?

$result=mysql_query("select Apellido,Nombre,DATE_FORMAT(Nacimiento,'%d-%m-%Y')AS Nacimiento,DATE_FORMAT(Fallecimiento,'%d-%m-%Y')AS Fallecimiento,(YEAR(CURRENT_DATE) - YEAR(Fallecimiento)) - (RIGHT(CURRENT_DATE,5) < RIGHT(Fallecimiento,5)) AS Años,(YEAR(Fallecimiento) - YEAR(Nacimiento)) - (RIGHT(Fallecimiento,5) < RIGHT(Nacimiento,5)) AS Edad,Url from listape where MONTH(Fallecimiento)=MONTH(CURDATE()) ORDER BY fallecimiento ASC",$link);
  #6 (permalink)  
Antiguo 01/12/2006, 12:47
Avatar de Lord of freaks  
Fecha de Ingreso: octubre-2004
Ubicación: Madrid
Mensajes: 334
Antigüedad: 19 años, 6 meses
Puntos: 2
Creo que así iría pero comprueba las respuestas del if a ver si te da la fecha en tu formato y yo que tu cambiaba la otra respueta :)

Código:
SELECT
 
Apellido,
Nombre,
DATE_FORMAT(Nacimiento,'%d-%m-%Y')AS Nacimiento,
IF (STRCMP('0000-00-00', fallecimiento), 'NO LO MATES SIGUE VIVO', DATE_FORMAT(Fallecimiento,'%d-%m-%Y')) AS Fallecimiento,
(YEAR(CURRENT_DATE) - YEAR(Fallecimiento)) - (RIGHT(CURRENT_DATE,5) < RIGHT(Fallecimiento,5)) AS Años,
(YEAR(Fallecimiento) - YEAR(Nacimiento)) - (RIGHT(Fallecimiento,5) < RIGHT(Nacimiento,5)) AS Edad,
Url 

FROM 
listape 

WHERE

MONTH(Fallecimiento)=MONTH(CURDATE()) 
ORDER BY fallecimiento ASC
__________________
Una vez un elemental de rayos mató una tribu entera de tritones.

¡¡ El sólo quería darse un baño !!

http://www.frikilandia.com

Neither Fu Nor Fa
  #7 (permalink)  
Antiguo 01/12/2006, 13:06
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 4 meses
Puntos: 6
Pero su problema es con la fecha de nacimiento, creo que lo que buscas es algo como esto
Código:
SELECT
        APELLIDO, NOMBRE, DATE_FORMAT(NACIMIENTO,'%d-%m-%Y') AS NACIMIENTO, DATE_FORMAT(Fallecimiento,'%d-%m-%Y')AS Fallecimiento, (YEAR(CURRENT_DATE) - YEAR(Fallecimiento)) - (RIGHT(CURRENT_DATE,5) < RIGHT(Fallecimiento,5)) AS Años, IF(STRCMP('0000-00-00', NACIMIENTO), '0', (YEAR(Fallecimiento) - YEAR(Nacimiento)) - (RIGHT(Fallecimiento,5) < RIGHT(Nacimiento,5))) AS EDAD
FROM
        LISTAPE
Saludos!
  #8 (permalink)  
Antiguo 01/12/2006, 19:53
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 19 años, 6 meses
Puntos: 3
Gracias Gabo77...

Si, es verdad... mi inconveniente es con Nacimiento. De todas formas he adaptado lo que me dijo "Lord of freaks".
Pero el resultado haciendo como me dicen me dá "0" en todas las consultas de "Edad al fallecer", y lo que necesito es que me de "0" solamente en las filas en donde el Nacimiento es "0000-00-00", es decir, cuando tiene que sacar el resultado entre Nacimiento y Fallecimiento para saber la "Edad de Fallecimiento" y el campo Nacimiento es "0000-00-00" me ponga "0"... pero las demás filas, en donde sí tengo las dos fechas (Nacimiento y Fallecimiento) me ponga el resultado como corresponde.
No se si me explico adecuadamente.
Desde ya muchisimas gracias por la ayuda que me estan dando!!!
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 12:53.