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

[SOLUCIONADO] Fecha cercana MySQL

Estas en el tema de Fecha cercana MySQL en el foro de Mysql en Foros del Web. Buenas tardes a todos los del foro traigo un problema al no saber generar una consulta que tienen que ver con fechas estuve leyendo algunos ...
  #1 (permalink)  
Antiguo 12/11/2013, 18:19
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta Fecha cercana MySQL

Buenas tardes a todos los del foro traigo un problema al no saber generar una consulta que tienen que ver con fechas estuve leyendo algunos temas parecidos en este foro pero no se acercan en mucho a lo que busco lei este tema que me oriento un poco pero aun asi no pude encontrar la solucion
a ver tengo dos tablas partos - destete

la primera se compone de esta manera

Cita:
partos.

id | site_id |identity_id | vivos | muertos | momificados | evento | semana |
-----------------------------------------------------------------------------------------------
1 | 20 | 17045 | 13 | 0 | 1 | 2012-09-29 | 39
2 | 20 | 17050 | 11 | 0 | 3 | 2012-08-21 | 34
3 | 20 | 17053 | 12 | 1 | 0 | 2012-08-25 | 34
4 | 20 | 17060 | 11 | 0 | 0 | 2012-08-24 | 34
5 | 20 | 17066 | 12 | 0 | 1 | 2012-09-03 | 36
---
y asi hasta los 34,333 y creciendo.
la segunda tabla

Cita:
destete.

id | site_id | identity_id | destetados | peso | evento | semana |
--------------------------------------------------------------------------------------
1 | 20 | 17045 | 12 | 74.50 | 2012-10-22 | 43 |
2 | 20 | 17045 | 11 | 71.50 | 2013-03-12 | 11 |
3 | 20 | 17045 | 10 | 68.20 | 2013-08-02 | 31 |
4 | 20 | 17050 | 12 | 74.00 | 2012-09-13 | 37 |
5 | 20 | 17053 | 11 | 71.70 | 2012-09-17 | 38 |
6 | 20 | 17053 | 13 | 80.60 | 2013-02-03 | 5 |

y asi hasta los 34,248

bien la primera tabla guarda los partos que hay las granjas - site_id es el identificador de las granjas - identity_id es el identificador del animal que esta pariendo en este caso hablamos de cerdas, vivos muertos, momificados y destetados hacen referencia a las crias, lechones o verracos depende de la region donde vivan. - la segunda tabla guarda el evento de destetes este es el evento donde separan las crias de la mama.

Bien el problema que tengo es para calcular la edad de las crias o lechones al momento del evento del destete. no se como relacionar una tabla con la otra y tampoco como restar las fechas de las tablas para sacar la edad siendo que aproximadamente este evento ocurre en un periodo de 21 dias despues del parto.. aunque puede ser un poco mas o un poco menos. seria algo asi como la fecha mas cercana despues del parto por ejemplo

Cita:
1 | 20 | 17045 | 13 | 0 | 1 | 2012-09-29 | 39 ** el primer parto de la 1era tabla

1 | 20 | 17045 | 12 | 74.50 | 2012-10-22 | 43 | ** el primer destete de la 2da tabla.
la edad seria de 23 dias. pero si se fijan en las tablas están varias veces los identity_id con diferente fechas de partos e incluso hasta 3 partos en el mismo año.

espero puedan ayudarme de antemano muchas gracias.
  #2 (permalink)  
Antiguo 12/11/2013, 19:57
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Fecha cercana MySQL

Antes de crear tamblas debes saber como vas a estructurar los datos en la base de datos, aqui lo que veo es demasiada redundancia de datos.

Si en partos guardas los cerditos recien nacidos, crea una tabla para ello con una ID unitaria para cada cerdito y, en cada destete guardas dicha ID con la informacion del destete. Hasta aqui como relacionar dichas tablas.

Ahora bien, para calcular y hacer operaciones con fechas, lo primero que debes haber hecho es crear el campo de fecha como un campo de tipo DATE.
Despues usa la funcion DATEDIFF().

Creo recordar que era esta funcion. Devuelve los días entre ambas fechas y tan solo deberias poner un condicional tal que así.
Código MySQL:
Ver original
  1. DATEDIFF(DATE(partos.evento),DATE(destete.evento)) BETWEEN 20 AND 25
Por ejemplo.
  #3 (permalink)  
Antiguo 12/11/2013, 21:54
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Desacuerdo Respuesta: Fecha cercana MySQL

Cita:
Iniciado por bNd170 Ver Mensaje
Antes de crear tamblas debes saber como vas a estructurar los datos en la base de datos, aqui lo que veo es demasiada redundancia de datos.

Si en partos guardas los cerditos recien nacidos, crea una tabla para ello con una ID unitaria para cada cerdito y, en cada destete guardas dicha ID con la informacion del destete. Hasta aqui como relacionar dichas tablas.

Ahora bien, para calcular y hacer operaciones con fechas, lo primero que debes haber hecho es crear el campo de fecha como un campo de tipo DATE.
Despues usa la funcion DATEDIFF().

Creo recordar que era esta funcion. Devuelve los días entre ambas fechas y tan solo deberias poner un condicional tal que así.
Código MySQL:
Ver original
  1. DATEDIFF(DATE(partos.evento),DATE(destete.evento)) BETWEEN 20 AND 25
Por ejemplo.
gracias por tu respuesta bNd170 no es redundancia de información esas tablas ya estan creadas de un programa profesional... yo solo quiero extraer cierta información de ahi.. lo de los id para cada cerdito no me suena funcional ya que el id de la cerda es lo que cuenta... soy principiante en esto lo reconozco pero gracias a todos los del foro aprendo mas cada día.. probare esto que me indicas y te comento como me fue muchas gracias...
  #4 (permalink)  
Antiguo 13/11/2013, 00:09
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Fecha cercana MySQL

Tienes que aclararnos algunas cuestiones, aunque también yo creo que para sacar estos datos hubiera sido necesario un identificador de parto o camada en las dos tablas, pues eso lo facilitaría todo.
Con lo que tienes, si te falta ese identificador de parto o camada en las dos tablas, debes relacionar las tablas uniendo por la granja, la madre y con fechas de referencia, y me refiero con ello al menor y mayor número de dias en que puede producirse un destete desde el parto, y siempre antes de que la madre vuelva a parir de nuevo. Con eso podremos empezar a hacer algo. Otra cosa te llevará a error. Imagino que el destete es de todos los animales de la camada o al menos de los que quedan vivos, y que no puede haber dos fechas de destete para una misma camada. En cualquier caso,habrá que tener en cuenta que la gestación de una cerda es de 114 días aproximadamente y el destete se produce sobre los 21 días.

Última edición por jurena; 13/11/2013 a las 06:56
  #5 (permalink)  
Antiguo 13/11/2013, 09:30
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Fecha cercana MySQL

como podría hacer una consulta que buscara en la tabla de destete la fecha mas próxima al parto que es 21 dias después en promedio puede ser arriba o abajo y relacionarla con el site_id y el identity_id de la tabla de partos?
  #6 (permalink)  
Antiguo 13/11/2013, 10:55
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Fecha cercana MySQL

Prueba esto (he puesto como fecha máxima para el destete 50 días después del parto. Imagino que será una barbaridad, pero adáptalo a tus necesidades (tienes que dejar un margen y además la cerda no parirá otra vez hasta más de 114 días después). He llamado a la tabla destetes (en plural):
Código MySQL:
Ver original
  1. SELECT d.site_id,
  2.  d.identity_id,
  3.  p.evento fechaparto,
  4.  d.evento fechadestete,
  5.  DATEDIFF( d.evento, p.evento ) dias,
  6.  d.destetados,
  7.  d.peso,
  8.  d.semana
  9. FROM partos p
  10. INNER JOIN destetes d ON p.site_id = d.site_id
  11. AND p.identity_id = d.identity_id
  12. AND d.evento BETWEEN p.evento AND DATE_ADD( p.evento, INTERVAL 50 DAY )

Última edición por jurena; 13/11/2013 a las 11:21
  #7 (permalink)  
Antiguo 13/11/2013, 13:48
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Fecha cercana MySQL

Cita:
Iniciado por jurena Ver Mensaje
Prueba esto (he puesto como fecha máxima para el destete 50 días después del parto. Imagino que será una barbaridad, pero adáptalo a tus necesidades (tienes que dejar un margen y además la cerda no parirá otra vez hasta más de 114 días después). He llamado a la tabla destetes (en plural):
Código MySQL:
Ver original
  1. SELECT d.site_id,
  2.  d.identity_id,
  3.  p.evento fechaparto,
  4.  d.evento fechadestete,
  5.  DATEDIFF( d.evento, p.evento ) dias,
  6.  d.destetados,
  7.  d.peso,
  8.  d.semana
  9. FROM partos p
  10. INNER JOIN destetes d ON p.site_id = d.site_id
  11. AND p.identity_id = d.identity_id
  12. AND d.evento BETWEEN p.evento AND DATE_ADD( p.evento, INTERVAL 50 DAY )
muchas gracias justo lo que necesitaba... gracias - gracias -

Etiquetas: fecha, 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 15:49.