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

Contar filas entre 2 valores y obtener diferencia de dias

Estas en el tema de Contar filas entre 2 valores y obtener diferencia de dias en el foro de Mysql en Foros del Web. Buenas, tengo un problema con una consulta y me ha tomado bastante tiempo buscar una solucion. La tabla es igual a la siguiente Para explicarlo ...
  #1 (permalink)  
Antiguo 25/04/2014, 14:45
 
Fecha de Ingreso: abril-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Contar filas entre 2 valores y obtener diferencia de dias

Buenas, tengo un problema con una consulta y me ha tomado bastante tiempo buscar una solucion.

La tabla es igual a la siguiente



Para explicarlo un poco mejor cada columna:
  1. id
  2. equipo_uno
  3. equipo_dos
  4. semana
  5. descanso_eqp1
  6. descanso_eqp2
  7. fecha

Ok, basados en los cuadros seleccionados (equipo con id = 2) de la tabla, la explicacion seria:

de la columna 3, almacenar en una variable la fecha
recorrer filas hacia abajo hasta encontrar el mismo numero, y almacenar esa fecha
obtener la diferencia de dias entre las dos fechas almacenadas y colocarlo donde deben estar los 9999
  #2 (permalink)  
Antiguo 25/04/2014, 14:49
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: Contar filas entre 2 valores y obtener diferencia de dias

Postea la consulta que usas y te da problemas.
A ciegas es difícil saber donde debes corregir.

Lo que te puedo anticipar es que esto:
Cita:
de la columna 3, almacenar en una variable la fecha
recorrer filas hacia abajo hasta encontrar el mismo numero, y almacenar esa fecha
obtener la diferencia de dias entre las dos fechas almacenadas y colocarlo donde deben estar los 9999
suena a trabajo de programación, y no de SQL.
__________________
¿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 26/04/2014, 11:14
 
Fecha de Ingreso: abril-2014
Mensajes: 72
Antigüedad: 10 años
Puntos: 5
Respuesta: Contar filas entre 2 valores y obtener diferencia de dias

Bueno, yo pienso que tendrías que resolverlo con varias consultas y algo de programación.

Primero tendrías que calcular la diferencia en días de ambas fechas. No lo he probado, pero pienso que puedes resolverlo con esto (por favor, cuando lo pruebes me avisas):
Código MySQL:
Ver original
  1.  
  2. ( SELECT fecha
  3. FROM tabla
  4. WHERE equipo_uno = 2
  5. ) AS fecha_uno,
  6.  
  7. (
  8. SELECT fecha
  9. FROM tabla
  10. WHERE equipo_dos = 2
  11. ) AS fecha_dos
  12. )
  13.  
  14. FROM tabla

Luego tienes que determinar si al última fecha la juega como equipo_uno o como equipo_dos (y lo puedes hacer a partir de si el número de la consulta anterior es positivo o negativo). Tras eso tienes que hacer un UPDATE en el campo descanso_eqp1 o descanso_eqp2, según corresponda, a la fecha del segundo juego del equipo.

NOTA: Esto, como te lo expliqué, sólo funcionaría si cada equipo tiene únicamente 2 juegos (como sucede en tu ejemplo), si cada equipo tiene más de dos juegos tendrías que modificar la consulta y meter algo de programación como bien dijo gnzsoloyo (y tal vez tendrías que cambiar la estructura de la tabla).

Última edición por zyxer; 26/04/2014 a las 11:47 Razón: Mejorar explicación
  #4 (permalink)  
Antiguo 28/04/2014, 09:28
 
Fecha de Ingreso: abril-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Respuesta: Contar filas entre 2 valores y obtener diferencia de dias

Gracias por la pronta respuesta y disculpas por la demora en contestar de mi parte, probe el codigo que me pasaste y pues no funciono por el hecho que como mencionaste en la nota solo funciona si la tabla solo contiene esos registros, pero en realidad la tabla tiene 3722 filas y el equipo con id 2 se repite muchas veces en la tabla...
  • Cambiar la estructura de la tabla se me hace imposible ya que esta fuera de mis manos.
  • Lo de usar programacion no lo tengo muy claro (alguna explicacion ), y no lo veo tan factible ya que este es un proceso que debe correr una vez por semana para estar actualizado...
  • De usar programacion, que lenguaje seria el recomendado???

Gracias nuevamente nos leemos pronto... Saludos
  #5 (permalink)  
Antiguo 29/04/2014, 12:42
 
Fecha de Ingreso: abril-2014
Mensajes: 72
Antigüedad: 10 años
Puntos: 5
Respuesta: Contar filas entre 2 valores y obtener diferencia de dias

Cita:
Iniciado por ShokanCR Ver Mensaje
  • Cambiar la estructura de la tabla se me hace imposible ya que esta fuera de mis manos.
Entiendo... eso pasa con más frecuencia de la que uno quisiera.

Cita:
Iniciado por ShokanCR Ver Mensaje
  • Lo de usar programacion no lo tengo muy claro (alguna explicacion ), y no lo veo tan factible ya que este es un proceso que debe correr una vez por semana para estar actualizado...
Con "usar programación" nos referimos a hacer un script o algo al que puedas pasarle información manualmente o la extraiga automáticamente de algún lugar, con esa información ejecute una o varias consultas MySQL, reciba los datos de las consultas, haga cálculos con los datos recibidos para obtener la información precisa que buscas (en este caso, el tiempo de descanso de cada equipo) y ejecute otra sentencia más para actualizar el campo correspondiente.

Sobre tu preocupación de que "no sea tan factible porque es un proceso que tiene que correr una vez por semana para estar actualizado..." (...) El script que hagas también puede correr una vez por semana

Cita:
Iniciado por ShokanCR Ver Mensaje
  • De usar programacion, que lenguaje seria el recomendado???
Pues el que manejes y el que tu servidor permita.

------------------------------------------------

Ahora, mi inquietud es: Conoces algún lenguaje de programación o solo sabes base de datos? Porque si es así deberás conseguir un programador.

Última edición por zyxer; 29/04/2014 a las 12:53
  #6 (permalink)  
Antiguo 29/04/2014, 17:11
 
Fecha de Ingreso: abril-2014
Mensajes: 3
Antigüedad: 10 años
Puntos: 0
Respuesta: Contar filas entre 2 valores y obtener diferencia de dias

De hecho soy programador y pues practicamente hasta ahora estoy lidiando con MySQL... Como dije, creo que debo dejar la parte de usar programacion por un lado... ya que casi por obligacion debe estar escrito en la base de datos como un stored procedure... por suerte durante estos dias y leyendo mucho he podido ir resolviendo el problema por partes, lo unico que me falta es juntar todo...
  #7 (permalink)  
Antiguo 29/04/2014, 20:40
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: Contar filas entre 2 valores y obtener diferencia de dias

Probemos así:
Código MySQL:
Ver original
  1.     T1.equipo_uno equipo, DATEDIFF(T1.fecha fecha_uno, T2.fecha fecha_dos) diferencia
  2.     tabla T1
  3.         INNER JOIN
  4.     tabla T2 ON T1.equipo_dos = T2.equipo_uno
  5.     equipo_dos = 2 AND T1.fecha > T2.fecha
  6. GROUP BY T2.equipo_dos , T2.equipo_dos;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: dias, diferencia, filas, 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:35.