MySQL: Можно ли «заполнить» SELECT значениями без таблицы?

Мне нужно отобразить общее количество« заказов »за каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы создать вспомогательную таблицу месяцев с 12 записями на каждый год, но есть ли способ получить диапазон месяцев, не вводя новую таблицу?

Что-то вроде:

SELECT [all year-month combinations between january 2000 and march 2011] 
FROM DUAL AS years_months

Кто-нибудь знает, как это сделать сделай это? Можете ли вы использовать SELECT с какой-либо формулой для «создания» данных на лету?!

ОБНОВЛЕНИЕ:

Я нашел это: SELECT со значениями без таблицы? Мне нужно отобразить общее количество «заказов» за каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы сделать вспомогательную таблицу «...

Мне нужно отобразить общее количество« заказов »за каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы создать вспомогательную таблицу месяцев с 12 записями на каждый год, но есть ли способ получить диапазон месяцев, не вводя новую таблицу?

Что-то вроде:

SELECT [all year-month combinations between january 2000 and march 2011] 
FROM DUAL AS years_months

Кто-нибудь знает, как это сделать сделай это? Можете ли вы использовать SELECT с какой-либо формулой для "создания" данных на лету?!

ОБНОВЛЕНИЕ:

Я нашел это: SELECT со значениями без таблицы? Мне нужно отобразить общее количество «заказов» за каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы сделать вспомогательную таблицу «...

Мне нужно отобразить общее количество« заказов »за каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы создать вспомогательную таблицу месяцев с 12 записями на каждый год, но есть ли способ получить диапазон месяцев, не вводя новую таблицу?

Что-то вроде:

SELECT [all year-month combinations between january 2000 and march 2011] 
FROM DUAL AS years_months

Кто-нибудь знает, как это сделать сделай это? Можете ли вы использовать SELECT с какой-либо формулой для "создания" данных на лету?!

ОБНОВЛЕНИЕ:

Я нашел это: заказов на каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы сделать вспомогательную таблицу «...

Мне нужно отобразить общее количество« заказов »за каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы создать вспомогательную таблицу месяцев с 12 записями на каждый год, но есть ли способ получить диапазон месяцев, не вводя новую таблицу?

Что-то вроде:

SELECT [all year-month combinations between january 2000 and march 2011] 
FROM DUAL AS years_months

Кто-нибудь знает, как это сделать сделай это? Можете ли вы использовать SELECT с какой-либо формулой для «создания» данных на лету?!

ОБНОВЛЕНИЕ:

Я нашел это: заказов на каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы сделать вспомогательную таблицу «...

Мне нужно отобразить общее количество« заказов »за каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы создать вспомогательную таблицу месяцев с 12 записями на каждый год, но есть ли способ получить диапазон месяцев, не вводя новую таблицу?

Что-то вроде:

SELECT [all year-month combinations between january 2000 and march 2011] 
FROM DUAL AS years_months

Кто-нибудь знает, как это сделать сделай это? Можете ли вы использовать SELECT с какой-либо формулой для "создания" данных на лету?!

ОБНОВЛЕНИЕ:

Я нашел это: Я мог бы сделать вспомогательную таблицу «...

Мне нужно отобразить общее количество« заказов »за каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы создать вспомогательную таблицу месяцев с 12 записями на каждый год, но есть ли способ получить диапазон месяцев, не вводя новую таблицу?

Что-то вроде:

SELECT [all year-month combinations between january 2000 and march 2011] 
FROM DUAL AS years_months

Кто-нибудь знает, как это сделать сделай это? Можете ли вы использовать SELECT с какой-либо формулой для «создания» данных на лету?!

ОБНОВЛЕНИЕ:

Я нашел это: Я мог бы сделать вспомогательную таблицу «...

Мне нужно отобразить общее количество« заказов »за каждый год и месяц. Но в течение нескольких месяцев данных нет, но я НЕ хочу отображать этот месяц (с общим значением ноль). Я мог бы создать вспомогательную таблицу месяцев с 12 записями на каждый год, но есть ли способ получить диапазон месяцев, не вводя новую таблицу?

Что-то вроде:

SELECT [all year-month combinations between january 2000 and march 2011] 
FROM DUAL AS years_months

Кто-нибудь знает, как это сделать сделай это? Можете ли вы использовать SELECT с какой-либо формулой для "создания" данных на лету?!

ОБНОВЛЕНИЕ:

Я нашел это: но есть ли способ получить диапазон месяцев без введения новой таблицы?

Что-то вроде:

SELECT [all year-month combinations between january 2000 and march 2011] 
FROM DUAL AS years_months

Кто-нибудь знает, как это сделать? Можете ли вы использовать SELECT с какой-либо формулой для "создания" данных на лету?!

ОБНОВЛЕНИЕ:

Я нашел это: но есть ли способ получить диапазон месяцев без введения новой таблицы?

Что-то вроде:

SELECT [all year-month combinations between january 2000 and march 2011] 
FROM DUAL AS years_months

Кто-нибудь знает, как это сделать? Можете ли вы использовать SELECT с какой-либо формулой для "создания" данных на лету?!

ОБНОВЛЕНИЕ:

Я нашел это: генерировать дни из диапазона дат

Принятый ответ на этот вопрос - это то, что я ищу. Может быть, это не самый простой метод, но он делает то, что я хочу: заполнять выделение данными на основе формулы ....

Чтобы «создать» таблицу на лету со всеми месяцами за последние 10 лет:

SELECT CONCAT(MONTHNAME(datetime), ' ' , YEAR(datetime)) AS YearMonth,
       MONTH(datetime) AS Month,
       YEAR(datetime) AS Year 
FROM (
    select (curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) MONTH) as datetime
    from (select 0 as a 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) as a
    cross join (select 0 as a 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) as b
    cross join (select 0 as a 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) as c
    LIMIT 120
) AS t
ORDER BY datetime ASC 

] Должен признать, это ОЧЕНЬ экзотично, но оно ДЕЙСТВИТЕЛЬНО работает ...

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

Но использование таблицы "чисел" или "календаря", вероятно, лучший вариант, поэтому я собираюсь использовать это.

8
задан Community 23 May 2017 в 12:02
поделиться