MySQL включает пустые данные WEEKS как 0 - PullRequest
0 голосов
/ 31 октября 2018

есть ли способ включить значение пустой недели из пустого результата? или как я могу пустить пропущенные недели

есть бит моего запроса

SELECT 
    o.user_id , WEEK(FROM_UNIXTIME(o.cdate, '%Y-%m-%d'),7) as week_number,
FROM 
    (_orders AS `o`) 
WHERE 
    o.cdate BETWEEN '1505409460' AND '1540815218'
GROUP BY 
    week_number

Результат

1
2
4
6
8

запрошенный результат

1
2
3
4
5
6
7
8

1 Ответ

0 голосов
/ 31 октября 2018

Это всего лишь пример, есть множество способов добиться этого. Первым шагом является создание или генерация набора целых чисел. Наличие таблицы этих очень удобно на самом деле. Здесь я использую 2 подзапроса с перекрестным соединением для генерации 100 строк (с n = 0 до 99)

select
   ns.n, sq.*
from (
        select
           d1.digit + (d10.digit*10) as n
        from (
              SELECT 0 AS digit UNION ALL
              SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL  
              SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL 
              SELECT 9
              ) d1
        cross join (
              SELECT 0 AS digit UNION ALL
              SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL  
              SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL 
              SELECT 9
            ) d10
    ) ns
left join (

    your query goes here

    ) sq on ns.n = sq.week_number
where n between 1 and 52
order by n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...