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

Я не хотел, чтобы в моем SQL-запросе требовались внешние зависимости (необходимо иметь таблицу календаря, процедуру заполнения временной таблицы датами и т. д.). Первоначальная идея этого запроса взята из http: // jeffgarretson . / word /. / / 2012/05/04 / generate-a-range-of-date-in-mysql / , который я немного оптимизировал для ясности и простоты использования.

SELECT (CURDATE() - INTERVAL c.number DAY) AS date
FROM (SELECT singles + tens + hundreds number FROM 
( SELECT 0 singles
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
) singles JOIN 
(SELECT 0 tens
UNION ALL SELECT  10 UNION ALL SELECT  20 UNION ALL SELECT  30
UNION ALL SELECT  40 UNION ALL SELECT  50 UNION ALL SELECT  60
UNION ALL SELECT  70 UNION ALL SELECT  80 UNION ALL SELECT  90
) tens  JOIN 
(SELECT 0 hundreds
UNION ALL SELECT  100 UNION ALL SELECT  200 UNION ALL SELECT  300
UNION ALL SELECT  400 UNION ALL SELECT  500 UNION ALL SELECT  600
UNION ALL SELECT  700 UNION ALL SELECT  800 UNION ALL SELECT  900
) hundreds
ORDER BY number DESC) c  
WHERE c.number BETWEEN 0 and 364

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

Если вам нужен больший набор чисел, легко добавить таблицу тысяч. Вам нужно всего лишь скопировать и вставить таблицу сотнями и добавить нуль в 9 чисел.

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