GROUP BY Solo selecciona la primera fila del grupo

GROUP BY Solo selecciona la primera fila del grupo

Estoy tratando de crear una consulta que obtenga todas las filas de la base de datos y las agrupe por mes y año. Sin embargo, solo veo la primera fila seleccionada y ninguna de las otras. ¿Alguien puede ayudarme a solucionar este problema?

SELECT `id` 
FROM `tickets` 
WHERE `category` = '1' 
GROUP BY DATE_FORMAT(date,'%Y-%m') DESC;

Hasta donde yo sé, esto debería funcionar, pero tal vez ustedes sepan algo

--EDITAR--

Básicamente estoy tratando de crear algo como este pero basado en el mes del año. Estoy usando nova framework.

~Saludos

Mostrar la mejor respuesta

Cómo es posible agrupar por con orden DESC :)

GROUP BY no coloca filas de la tabla en el conjunto de resultados que produce. Genera las filas que coloca en el conjunto de resultados utilizando las filas leídas de la tabla. Para cada grupo genera una fila.

Edite su pregunta y proporcione datos de muestra y los resultados deseados.

Creo que quieres ORDER BY, no GROUP BY:

SELECT id
FROM tickets
WHERE category = '1' 
ORDER BY DATE_FORMAT(date, '%Y-%m') DESC;

GROUP BY está haciendo exactamente lo que se supone que debe hacer. Agrega los datos, por lo que cada valor distinto de las claves GROUP BY tiene una fila en el conjunto de resultados.

En un teléfono celular, por lo tanto, me ganaste +1.

Eso funciona, pero no obtiene exactamente el resultado que esperaba. Básicamente necesito "grupos" de días dentro de un mes.

Si desea todas las filas de la tabla, sin agregación, entonces lo que probablemente necesite es una cláusula ORDER BY:

SELECT `id`
FROM `tickets`
WHERE `category` = '1'
ORDER BY DATE_FORMAT(date,'%Y-%m') DESC;

Entonces también tienes que agrupar por id. La consulta tiene que ser como la siguiente:

SELECT `id` FROM `tickets` WHERE `category` = '1' GROUP BY DATE_FORMAT(date,'%Y-%m'),id DESC;

Fui con esta solución. Me proporcionó lo que más necesitaba y cambiaré mi php para que funcione con esto.

Creo que puedes usar ORDER BY pero si realmente quieres usar GROUP BY entonces también tienes que incluir id ya que no lo has usado en una función agregada. Todas las columnas seleccionadas que no se han agregado deben incluirse en un GROUP BY Dado que no tiene ningún agregado, no tiene que usar GROUP BY, pero si lo tiene, debe seguir las reglas.