Я строю запрос MySQL с подзапросами. Запрос требует, как описано в Получение числа строк с запросом GROUP BY , количество записей, возвращаемых запросом group-by, потому что я хочу количество дней с записями в базе данных. Поэтому я использую следующее:
SELECT
COUNT(*)
FROM
(
SELECT
cvdbs2.dateDone
FROM
cvdbStatistics cvdbs2
WHERE
cvdbs2.mediatorId = 123
GROUP BY
DATE_FORMAT( cvdbs2.dateDone, "%Y-%d-%m" )
) AS activityTempTable
Теперь я хочу это как подзапрос, потому что мне нужно больше данных с разными операторами WHERE. Так что мой запрос становится:
SELECT
x,
y,
z,
(
SELECT
COUNT(*)
FROM
(
SELECT
cvdbs2.dateDone
FROM
cvdbStatistics cvdbs2
WHERE
cvdbs2.mediatorId = mediators.id
GROUP BY
DATE_FORMAT( cvdbs2.dateDone, "%Y-%d-%m" )
) AS activityTempTable
) AS activeDays
FROM
mediators
LEFT JOIN
cvdbStatistics
ON
mediators.id = cvdbStatistics.mediatorId
WHERE
mediators.recruiterId = 409
GROUP BY
mediators.email
(Я пропустил некоторые несущественные WHERE-операторы из моих запросов. 409 - это просто пример id, он вставляется PHP).
Теперь я получаю следующую ошибку:
#1054 - Unknown column 'mediators.id' in 'where clause'
MySQL забыл о mediators.id в самом глубоком подзапросе. Как построить запрос с количеством результатов запроса GROUP-BY, для которого в качестве одного из результатов требуется значение из основного запроса? Почему самый глубокий запрос не знает о mediators.id?