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

Cacular quien hace mas

Estas en el tema de Cacular quien hace mas en el foro de Mysql en Foros del Web. Hola a todos; estoy intentando sacar esta consulta que me esta desquiciando. Tengo 4 salones en los que cada dia se meten datos 3 veces. ...
  #1 (permalink)  
Antiguo 27/11/2009, 07:15
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Cacular quien hace mas

Hola a todos;
estoy intentando sacar esta consulta que me esta desquiciando.

Tengo 4 salones en los que cada dia se meten datos 3 veces. Quiero hacer que la consulta me de quien a echo mas en una semana,
La consulta que hago es esta.
Código PHP:
SELECT *, SUM(cambio) AS topcambio
FROM cierre
salon
WHERE YEARWEEK
(listados)=YEARWEEK(NOW()) AND cisalon=id_salon
GROUP BY cisalon
ORDER BY cambio DESC 
Pero no me saca el salon correcto, ya que me saca 5000, cuando me deberia de sacar 6900 que es el valor mas alto y en ORDER BY lo tengo asi.

Alguien me puede decir por que no me saca el 6900?
Un saludo
  #2 (permalink)  
Antiguo 27/11/2009, 07:17
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Cacular quien hace mas

Solucionado, seré gilipollas. En vez de ordenarlo por topcambio, lo ordenaba por cambio.
  #3 (permalink)  
Antiguo 27/11/2009, 07:45
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Cacular quien hace mas

Siguiendo con este tema, como podria saber lo mismo, pero que en vez de semanas fuera en meses.

Un saludo
  #4 (permalink)  
Antiguo 27/11/2009, 09:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Cacular quien hace mas

Código sql:
Ver original
  1. SELECT *, SUM(cambio) AS topcambio
  2. FROM cierre, salon
  3. WHERE DATE_FORMAT(listados, '%Y%m')=DATE_FORMAT(NOW(), '%Y%m') AND cisalon=id_salon
  4. GROUP BY cisalon
  5. ORDER BY topcambio DESC

No lo he probado. Piensa que un mes no es un mes, sino el mes de un año. Por eso que tengamos que agrupar por año y mes. Naturalmente, también podrías hacerlo haciendo la comparación con MONTH() y YEAR() de las fechas y del día de Hoy. Quizás sea hasta más rápida la consulta, puesto que trabaja con números y no tiene que hacer conversión a cadena de texto. Te la pongo también
Código sql:
Ver original
  1. SELECT *, SUM(cambio) AS topcambio
  2. FROM cierre, salon
  3. WHERE (YEAR(listados)=YEAR(NOW()) AND MONTH(listados) = MONTH(NOW())) AND cisalon=id_salon
  4. GROUP BY cisalon
  5. ORDER BY topcambio DESC
  #5 (permalink)  
Antiguo 27/11/2009, 11:17
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Cacular quien hace mas

Gracias, con el month solo me coge el mes actual. esto me sirve.
  #6 (permalink)  
Antiguo 28/11/2009, 09:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Cacular quien hace mas

Pero no debería servirte con sólo month(), pues si tienes datos del año pasado o de hace dos años o más, del mes de noviembre, también te saldrían.
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 05:02.