Нет JOIN
необходимо. Вместо этого просто используйте столбец p1.id.
SELECT
p1.customerId AS id,
MONTH(p1.order_date) as month,
YEAR(p1.order_date) as year
FROM
jugnoo AS p1
WHERE
p1.id IN (SELECT DISTINCT
customerId AS id
FROM
jugnoo p2
WHERE
MONTH(p2.order_date) = 06
AND YEAR(p2.order_date) = 2017
order by year(p2.order_date), month(p2.order_date))
order by 3, 2;
Когда задействованы несколько таблиц, рекомендуется квалифицировать все столбцы в программировании. Как p1.id
вместо просто id
. Меньше подвержено ошибкам, легче читать и поддерживать.
Редактировать: (по запросу)
Использовать коррелированный подзапрос для получения данных за каждый месяц:
SELECT
p1.customerId AS id,
MONTH(p1.order_date) as month,
YEAR(p1.order_date) as year
FROM
jugnoo AS p1
WHERE
p1.id IN (SELECT DISTINCT
p2.customerId AS id
FROM
jugnoo p2
WHERE
MONTH(p2.order_date) = MONTH(p1.order_date)
AND YEAR(p2.order_date) = YEAR(p1.order_date))
order by 3, 2;