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

[SOLUCIONADO] Problema en consulta mysql con with rollup y order by

Estas en el tema de Problema en consulta mysql con with rollup y order by en el foro de Mysql en Foros del Web. Hola chicos, recientemente estoy experimentando un problema con una consulta mysql utilizando la sentencia WITH ROLLUP, necesito agrupar los datos por un campo y una ...
  #1 (permalink)  
Antiguo 26/06/2016, 10:02
 
Fecha de Ingreso: marzo-2011
Mensajes: 33
Antigüedad: 13 años, 1 mes
Puntos: 0
Problema en consulta mysql con with rollup y order by

Hola chicos, recientemente estoy experimentando un problema con una consulta mysql utilizando la sentencia WITH ROLLUP, necesito agrupar los datos por un campo y una sumatoria del total, pero necesito que el resultado venga ordenado de mayor a menor por el resultado de la sumatoria y me da el siguiente error,

Incorrect usage of CUBE/ROLLUP and ORDER BY

Aqui le dejo la consulta

Código MySQL:
Ver original
  1. SELECT COUNT(tipooperativo) as total22 FROM proprobo WHERE regional = '$regional' GROUP BY tipooperativo WITH ROLLUP ORDER BY total22
aqui es que me este error, no se que hacer, la idea es agrupar la sumatoria por tipooperativo, con la sumatoria del ROLLUP, pero organizado por el total22,

EL RESULTADO QUE ME DA CON WITH ROLLUP ES ESTE

OPERATIVO LUNES 25
OPERATIVO MARTES 10
OPERATIVO MIERCOLES 23
OPERATIVO JUEVES 38
OPERATIVO VIERNES 41

Y EL RESULTADO QUE DESEO ES ESTE, PERO SI USO WITH ROLLUP CON ORDER BY me da ese error

OPERATIVO VIERNES 41
OPERATIVO JUEVES 38
OPERATIVO LUNES 25
OPERATIVO MIERCOLES 23
OPERATIVO MARTES 10

Gracias y espero alguien me pueda ayudar

Última edición por gnzsoloyo; 26/06/2016 a las 15:24
  #2 (permalink)  
Antiguo 26/06/2016, 15:33
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: Problema en consulta mysql con with rollup y order by

En primer lugar, el ORDER BY en conjunción con un GROUP BY WITH ROLLUP destruye los resultados que buscas. El orden no es correcto en función de la agrupación, sino que son incompatibles.
Lo que debes hacer, entonces, es usar una consulta anidada.

Claro que hay dos formas de hacerlo diferentes, pero para que tenga sentido el ROLLUP, sólo una:

Código MySQL:
Ver original
  1. SELECT tipooperativo, TOTAL22
  2.     SELECT tipooperativo, COUNT(tipooperativo) total22
  3.     FROM proprobo
  4.     WHERE regional = '$regional'
  5.     GROUP BY tipooperativo WITH ROLLUP ) tresult
  6. ORDER BY total22 DESC
__________________
¿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/06/2016, 16:18
 
Fecha de Ingreso: marzo-2011
Mensajes: 33
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema en consulta mysql con with rollup y order by

Gracias por contestarme, pero tu consulta me da resultdo en cero, Recuerda que total22 no es un campo de la tabla, sino es la variable donde se guardara la sumatoria del coteo de la variable tipooperativo y la instruccion tresult, me puede explicar que hace, Saludos,
  #4 (permalink)  
Antiguo 26/06/2016, 16:51
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: Problema en consulta mysql con with rollup y order by

Empecemos por el principio... SI devuelve cero datos es porque la query base no devuelve datos, y eso puede pasar cuando la variable está vacía, lo que sería un problema de programación y no de SQL.
De lo contrario lo que dices no tiene sentido.

¿Qué te devuelve esto?:
Código SQL:
Ver original
  1. SELECT tipooperativo, COUNT(tipooperativo) total22
  2.     FROM proprobo
  3.     WHERE regional = '$regional'
  4.     GROUP BY tipooperativo WITH ROLLUP

Segundo: "tresult" no es una instrucción, ni una sentencia. Es un ALIAS a una tabla derivada, lo mismo que total22 lo es al campo generado por el COUNT(). Es de manual básico 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)
  #5 (permalink)  
Antiguo 27/06/2016, 16:58
 
Fecha de Ingreso: marzo-2011
Mensajes: 33
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Problema en consulta mysql con with rollup y order by

Disculpa, fue mi error, tu sentencia si da resultado,

Es que al escribir tu codigo cometi algunos errores de digitacion, pero decidi copiarlo y pegarlo y funciono perfectamente.

Gracias hermano (gnzsoloyo)

Última edición por angelbrito19; 27/06/2016 a las 20:32
  #6 (permalink)  
Antiguo 28/06/2016, 04:21
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: Problema en consulta mysql con with rollup y order by

__________________
¿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: campo, order, rollup, 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 17:28.