SELECT CarBrand.BrandName, Count(Cars.ColorName) AS CountOfGreenProducts
FROM (Cars
INNER JOIN CarFacts ON Cars.CarKey = CarFacts.CarKey)
INNER JOIN CarBrand ON CarFacts.BrandKey = CarBrand.BrandKey
GROUP BY CarBrand.BrandName
HAVING Cars.ColorName = "Green";
모든 녹색 자동차의 수를 가져 오려고하는데 "쿼리에 지정된 표현식 Cars.ColorName ="Green "이 집계 함수의 일부로 포함되어 있지 않습니다."라는 오류가 표시됩니다. 방법에 대한 도움을 주시면 감사하겠습니다. 이 오류를 수정합니다. 감사!
위의 sgeddes 주석을 확장하십시오.
조건을 HAVING
조항 에서 조항으로 옮기고 싶을 것 WHERE
입니다. 그 이유는 WHERE
집계 전에 절이 실행되기 때문입니다. 즉, 데이터베이스는 Cars
테이블 에서 모든 레코드를 필터링 INNER JOIN
하고 COUNT(Cars.ColorName)
.
HAVING
반면에 집계 후 필터링합니다. 데이터베이스가 레코드 세트에 대해 취할 마지막 단계입니다. 따라서 결과 집합의 필드가 아니기 HAVING Cars.ColorName = "Green"
때문에 데이터베이스가 혼란스러워집니다 Cars.ColorName
. CountOfGreenProducts
결과 집합에 존재하지만 숫자이기 때문에 "녹색"으로 필터링 할 수 없습니다. 따라서 DB에서 오류가 발생합니다.
그래서 대신에:
SELECT CarBrand.BrandName, Count(Cars.ColorName) AS CountOfGreenProducts
FROM (Cars
INNER JOIN CarFacts ON Cars.CarKey = CarFacts.CarKey)
INNER JOIN CarBrand ON CarFacts.BrandKey = CarBrand.BrandKey
WHERE Cars.ColorName = "Green"
GROUP BY CarBrand.BrandName;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다