GROUP BY выбирает только первый ряд группы

0

Я пытаюсь построить запрос, который получает все строки в базе данных и группирует их по месяцам и годам. Тем не менее, я вижу только первую выбранную строку, а не любую другую. Может ли кто-нибудь помочь мне исправить эту проблему?

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

Насколько я знаю, это должно сработать, но, может быть, вы, ребята, знаете что-то

--РЕДАКТИРОВАТЬ--

Основном им пытаются создать что - то вроде этого, но основываясь на месяц года. Я использую nova framework.

~ Привет

  • 0
    Как это возможно Group By С заказом DESC :)
  • 0
    GROUP BY не помещает строки из таблицы в набор результатов, которые она производит. Он генерирует строки, которые он помещает в набор результатов, используя строки, считанные из таблицы. Для каждой группы генерируется один ряд.
Показать ещё 1 комментарий
Теги:
phpmyadmin

4 ответа

2
Лучший ответ

Затем вам также нужно группировать по id. Запрос должен выглядеть следующим образом:

SELECT 'id' FROM 'tickets' WHERE 'category' = '1' GROUP BY DATE_FORMAT(date,'%Y-%m'),id DESC;
  • 0
    Я пошел с этим решением. Это дало мне то, что мне было нужно больше всего, и я изменил свой php, чтобы работать с этим
2

Я думаю, что вы хотите ORDER BY, а не GROUP BY:

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

GROUP BY делает именно то, что он должен делать. Он объединяет данные, поэтому каждое отдельное значение ключей GROUP BY имеет одну строку в результирующем наборе.

  • 0
    По мобильному телефону, значит, ты избил меня до +1.
  • 0
    Это работает, но не дает точно такой результат, на который я надеялся. Мне в основном нужны «группы» дней в течение месяца.
1

Если вы хотите, чтобы все строки таблицы без агрегации, то вам, вероятно, понадобится предложение ORDER BY:

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

Я думаю, что вы можете использовать ORDER BY но если вы действительно хотите использовать GROUP BY тогда вы должны также включать id поскольку вы не использовали его в агрегированной функции. Все выбранные столбцы, которые не были агрегированы, должны быть включены в группу GROUP BY Seeing, так как у вас нет каких-либо агрегатов, вам не нужно использовать GROUP BY, но если вы это делаете, вы должны следовать правилам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню