2017-02-10 4 views
0

У меня этот запрос, который работает почти идеально:SQL sorting months, почему я получаю декабрь сразу после января?

SELECT tbl.y year, group_concat(month_posts SEPARATOR '-') dates 
    FROM (
     SELECT YEAR(p.post_date) y, MONTH(p.post_date) m, concat(MONTH(p.post_date), ':', group_concat(p.id ORDER BY p.post_date ASC)) month_posts 
     FROM prt_posts p  
     WHERE (p.post_status = 'publish' OR p.post_status = 'future') 
      AND p.post_type = 'EVENT' 
      AND p.post_date <= DATE('2016-12-31 00:00:00') 
     GROUP BY y, m 
     ORDER BY y, m ASC 
    ) tbl 
GROUP BY tbl.y 
ORDER BY tbl.y DESC 

Выход год, даты с этим форматом:

месяц: ид, ид, Ид месяц: идентификатор, идентификатор, id-и т. д.

Моя проблема заключается в том, что по итогам я появился в декабре после января.

enter image description here

Как вы можете видеть на втором ряду, у меня есть 1: 128, 12: 138 и т.д., поэтому 1 (январь), а затем 2 (декабрь) сразу же после. Зачем?

ответ

0

Пока же решение для меня было добавить ORDER BY tbl.m в первом ряду:

SELECT tbl.y year, group_concat(month_posts ORDER BY tbl.m SEPARATOR '-') dates