programing

haveing 절'에 알 수 없는 열이 있습니다.

skycolor 2023. 10. 4. 21:07
반응형

haveing 절'에 알 수 없는 열이 있습니다.

사킬라 데이터베이스에서 영화 최장 대여 기간을 찾아야 합니다.시도해 본 적이 있습니다.

  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 - Unknown column 'rental.return_date' in 'having clause'

왜 그런지 아는 사람?집계된 데이터로 추정되는 열을 사용했습니다.제가 무엇을 빠뜨리고 있나요?

문서에 기재된 바와 같이

SQL 표준에서는 HAVING이 GROUP BY 절의 열만 참조하거나 Aggregate 함수에 사용되는 열만 참조해야 합니다.그러나 MySQL은 이 동작에 대한 확장을 지원하며 SELECT 목록의 열과 외부 하위 쿼리의 열을 참조해야 하는 것도 허용합니다.

return_date 및 rental_date를 선택 절에 지정해야 합니다.

두 가지 옵션이 있습니다.

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 =(
  ...

둘 다 잘 될 겁니다.

언급URL : https://stackoverflow.com/questions/36105812/unknown-column-in-having-clause

반응형