Неизвестный столбец в предложении having'
Мне нужно найти в базе данных sakila самый длинный период проката фильма. у меня есть trie это:
SELECT DISTINCT
customer.first_name
FROM
rental,
customer
WHERE
rental.customer_id = customer.customer_id
GROUP BY
rental.rental_id
HAVING
(
rental.return_date - rental.rental_date
) =(
SELECT
MAX(countRental)
FROM
(
SELECT
(
rental.return_date - rental.rental_date
) AS countRental
FROM
rental,
customer
GROUP BY
rental.rental_id
) AS t1
)
, но я получаю ошибку:
1054-неизвестный столбец " аренда.return_date ' in 'предложение having'
кто-нибудь знает почему? я использовал столбец, который должен быть агрегированными данными.. что я упускаю
1 ответов
Как написано в документации
стандарт SQL требует, чтобы HAVING ссылался только на столбцы в предложении GROUP BY или столбцы, используемые в агрегатных функциях. Однако MySQL поддерживает расширение этого поведения и разрешает ссылаться на столбцы в списке выбора и столбцы во внешних подзапросах.
вы должны указать return_date и rental_date в предложении select.
есть два опции:
SELECT DISTINCT
customer.first_name,
rental.return_date,
rental.rental_date
FROM
rental,
customer
WHERE
rental.customer_id = customer.customer_id
GROUP BY
rental.rental_id
HAVING
(
rental.return_date - rental.rental_date
) =(
...
или
SELECT DISTINCT
customer.first_name,
(rental.return_date - rental.rental_date) as rental_duration
FROM
rental,
customer
WHERE
rental.customer_id = customer.customer_id
GROUP BY
rental.rental_id
HAVING
rental_duration =(
...
оба должны работать нормально.