Drew прав, что у вас есть производная таблица T, но я попытаюсь добавить некоторые детали, которые могут быть полезны вам, поскольку вы находитесь в курсе.
- вы имеете производную таблицу T
- внешний запрос (сначала выбрать)
- внутренний запрос (второй выбор в скобках)
- внутренний запрос использует псевдоним таблицы функции и для пользователей.
- конечные столбцы внутреннего запроса являются dvdId, который является счетчиком из dvdIds в userDvd таблице и USERID
- Поскольку внешний запрос ограничен, чтобы использовать конечный набор записей из внутреннего запроса только те 2 колонки доступны, чтобы быть выбрали и видя, что они не включают имя, фамилию или пол, вы получаете ошибку.
Если вы хотите, чтобы ваш запрос был таким же, но чтобы использовать эти столбцы, вы можете присоединиться к вашей производной таблице обратно в таблицу пользователя и получить нужные вам столбцы. Такие, как это:
SELECT userId, firstname, lastname, gender
FROM
(SELECT COUNT(dvdId) dvdId, u.userId
FROM userDVD
JOIN users u ON userDVD.userId = u.userId
GROUP BY userId) as T
INNER JOIN users u2
ON t.user_id = u2.user_id
WHERE gender = 'F';
Этот метод, чтобы присоединиться обратно к исходной таблице велика, когда вы должны оптимизировать агрегацию, которая находится на большом столе или искать дубликаты или что-то подобное. Однако в вашем случае, если вы на самом деле нужно просто один запрос, объединяющий в себе на все столбцы, которые вы хотите в наборе результатов, таких, как это:
SELECT
u.userId, u.firstname, u.lastname, u.gender, COUNT(d.dvdId) as DVDCount
FROM
userDVD d
JOIN users u
ON d.userId = u.userId
WHERE u.gender = 'F'
GROUP BY
u.userId, u.firstname, u.lastname, u.gender
;
Ваш запрос не имеет смысла. Примеры данных и желаемые результаты помогут передать то, что вы хотите сделать. –