Почему MySQL выдает мне «Код ошибки: 1054. Неизвестный столбец« x »в« предложении »», когда я определил его в своем SELECT? - PullRequest
0 голосов
/ 14 ноября 2018

Что не так со следующим sql:

SELECT DATE(NOW())-INTERVAL seq.seq DAY sdate, u.order_type, IFNULL(c,0) c
FROM (
    SELECT 0 AS seq 
    UNION ALL SELECT 1 UNION ALL SELECT 2 
    UNION ALL SELECT 3 UNION ALL SELECT 4
    UNION ALL SELECT 5 UNION ALL SELECT 6
) seq
LEFT JOIN (
    SELECT t.order_type, DATE_FORMAT(t.order_date, '%Y-%m-%d') as tdate, count(*) c
    FROM `order` t
    WHERE t.order_type IN (10,11)
    GROUP BY t.order_type, tdate
) u ON u.tdate = sdate

Почему я получаю Error Code: 1054. Unknown column 'sdate' in 'on clause'? В основном я пытаюсь выбрать количество заказов в день для каждого типа заказа. Если в данный день нет заказов данного типа, я хочу получить 0 в результате:

| date       | order_type | count |
|------------|------------|-------|
| 2018-11-09 | 10         | 2     |
| 2018-11-09 | 11         | 0     |
| 2018-11-10 | 10         | 0     |
| 2018-11-10 | 11         | 0     |
| 2018-11-11 | 10         | 1     |
| 2018-11-11 | 11         | 2     |
| 2018-11-12 | 10         | 3     |
| 2018-11-12 | 11         | 2     |

1 Ответ

0 голосов
/ 14 ноября 2018

sdate определено в предложении SELECT и поэтому недоступно в предложении FROM ( FROM вычисляется waaaaaaaay до SELECT ). Вам необходимо указать расчет как есть в условии соединения:

ON u.tdate = DATE(NOW())-INTERVAL seq.seq DAY
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...