2009-08-18 4 views
2

2 개의 테이블을 조인하는 SQL SELECT 문이 있습니다.
주 테이블에는 제품에 대한 기타 정보가 들어 있으며 두 번째 크기 테이블에 조인됩니다.
두 번째 표는 ...MySQL : 문자열 값에 대한 MIN() 및 MAX()

SizeID = 크기의 기본 키
SizeName = 문자열 값 문자열로 저장된 숫자가 아닌 크기의 목록이 포함되어 다음과 같이 간단하게 구성되어 있습니다 (예 : 작은, 중간, 대형)
SizeOrder = 정수 값을 크기 순 정렬) (


내가 MIN()와 MAX를 반환하는 SELECT 문을 필요로 (5의 SizeOrder의 크기를 의미, 즉 2 명의의 SizeOrder보다 큰했다) 크기 표의 크기
그러나 실제 크기가 문자열로 저장되므로 SizeOrder 열에 대해 MIN() 및 MAX() 함수를 실행해야하지만 SizeName 열의 값을 반환해야합니다. 다음과 같이

나의 현재의 시도는 다음과 같습니다

이 오류를 반환
SELECT ProductReference, MIN(SizeOrder) AS MinSizeID, MAX(SizeOrder) AS MaxSizeID, 
(SELECT SizeName FROM Size WHERE SizeOrder = MinSizeID) AS MinSizeText, 
(SELECT SizeName FROM Size WHERE SizeOrder = MaxSizeID) AS MaxSizeText 
FROM (Product INNER JOIN Size ON Products.SizeFK = StoneSize.SizeID) 
WHERE ID = 132 
GROUP BY ProductReference; 

"참조 'MinSizeID이'(그룹 기능을 참조)는 지원되지 않습니다"

답변

3
MySQL이 당신의 별칭의 사용에 대한 불평

잘 모르겠어요하지만 그하여 그룹에없는 열을 선택에 대해 불평 할 경우 부속 선택의 열은

SELECT ProductReference, MIN(SizeOrder) AS MinSizeID, MAX(SizeOrder) AS MaxSizeID, 
(SELECT SizeName FROM Size WHERE SizeOrder = MIN(Products.SizeOrder)) AS MinSizeText, 
(SELECT SizeName FROM Size WHERE SizeOrder = MAX(Products.SizeOrder)) AS MaxSizeText 
FROM (Products INNER JOIN Size ON Products.SizeFK = StoneSize.SizeID) 
WHERE ID = 132 
GROUP BY ProductReference; 

을 시도합니다.

+0

당신이 기대했던 것처럼, 당신의 제안은 "그룹 기능의 사용이 잘못되었습니다"라는 오류 메시지를 반환합니다. – ticallian

+0

그건 정확히 내가 기대했던 것이 아닙니다. 우리가 관심있는 MIN (SizeOrder)이 SizeOrder가 아니기 때문에, 다음과 같이 subselects에서 SizeOrder를 정규화하려고 시도했기 때문일 수 있습니다. SizeOrder = MIN (Products.SizeOrder) 및 MAX()에 대해 동일합니다. –

+0

슬프게도 "그룹 기능의 사용이 잘못되었습니다."라는 오류가 발생했습니다. – ticallian

1

Size 테이블의 SizeOrder 필드를 사용하여 전체 쿼리를 수행 한 다음 SizeName 필드의 Size 테이블과 결과를 조인해야합니다.

관련 문제