Я думаю, offer_id
из таблицы offer_tracker
. Если у вас есть (левое) внешнее объединение и вы используете поле из правой таблицы в состоянии WHERE
(например, ваше offer_id = 4
), объединение фактически отменяется и дает те же результаты, что и внутреннее объединение.
Попытка отменить отмену (offer_id = 4 OR offer_id IS NULL
) не работает, как вы ожидаете. Любая строка из offer_tracker
с offer_id <> 4
уже прошла LEFT JOIN, но удалена из-за условия WHERE. Таким образом, строка с Friday 2nd
не появится в результатах, если для этой даты есть строка с offer_id
, отличная от 4
.
Переместите чек offer_id = 4
на LEFT JOIN
, вместо:
SELECT DATE_FORMAT(calendar_date, '%a %D') AS calendar_date
, count( tracker_id ) as clicks
FROM calendar
LEFT JOIN offer_tracker
ON offer_tracker.calendar_id = calendar.calendar_id
AND offer_id = 4
WHERE calendar_month = Month(CURDATE())
AND calendar_year = Year(CURDATE())
GROUP BY calendar_date