2016-08-29 4 views
-3

를 사용하여 여러 조건에서 가장 낮은 값을 얻을 수 있습니다 :MySQL의 쿼리 세 개의 열이 나는 가격 테이블이 UNION 연산자

id, price, product_id. 

product_id 여러 가격을 포함 할 수 있습니다.

mysql에서 쿼리를 수행 할 때 product_id 값이 가장 낮아야합니다.

이 테이블에서 UNION 연산자를 사용하여 여러 조건을 사용했지만 데이터가 오지만 결과가 잘못되었습니다. 이 표에서

가있다 4999 (101) PRODUCT_ID하지만 난

여기

는 각 레코드의 ID와 필요 가정 내 MySQL의 바이올린 링크 mysql fiddle

+0

MIN() 함수를 사용하여 그룹화하는 방법을 학습합니다. http://sqlfiddle.com/#!9/5ca76/21/0 – xQbert

+0

샘플 데이터를 바이올린에 입력하면 예상 출력을 표시 할 수 있습니까? 아마도이게 뭔가? http://sqlfiddle.com/#!9/5ca76/55/0 – xQbert

+0

안녕하세요, http://sqlfiddle.com/#!9/5ca76/56을 해결했습니다. –

답변

0

입니다 가격 ASC에 의해, 심지어 내가 설정 한 순서 5000를 얻고있다 최저 가격. 그렇지 않으면

Select p.* from price p 
INNER JOIN (Select product_ID, Min(Price) as price from `price` group by Product_ID) sub 
on sub.product_Id = p.product_Id 
and sub.price = p.price 

SQL FIDDLE

...

Select product_ID, Min(Price) as price from `price` group by Product_ID 

SQL FIDDLE

---- UPDATE

---- 아직

하지 내가 질문을 이해해야합니다 .. 그래서 나는 당신의 데이터에 주어진 예상 결과물을 요구했다. 나는 내가 얻지 못하는 요구 사항을 추론 할 수 있을지 모른다. 그것이 의미하는 바대로 나는 왜 노동 조합이 필요한지,이 "집단화"가 어떻게 작용했는지 전혀 알지 못했습니다.

SELECT p.* from price p 
INNER JOIN (Select product_ID, Min(Price) as price from `price` group by Product_ID) sub 
on sub.product_Id = p.product_Id 
and sub.price = p.price 

SQL Fiddle

범위에서 PRODUCT_ID의 겹침을 가정하지

은 ...

+0

여기 ID 값이 아닌 지정된 가격 범위로 가격을 받아야합니다. 범위는 배수가 될 수 있습니다. –

1

이것은 아주 기본적인 SQL이다.

select product_id, min(price) as price 
from price 
group by product_id; 

절에 의해 그룹에서 case 문에 추가 주어진 범위에 대한 제품 당 최소 가격을 가져올 수 :

select product_id, min(price) as price 
from price 
group by product_id, case when price between 100 and 5000 then 1 else 2 end; 

SQL fiddle

+0

위의 정확히 일치하는 –

+0

위의 mysql 피들 링크를 시도해보십시오. http://sqlfiddle.com/#!9/5ca76/25 –

+0

예를 들어 노동 조합이 어디에 있는지를 물어 보았습니다. –

0

SELECT pr.id, MIN (pr.price) , pr.product_id pr.price> = 100 및 pr.price < = 5000 그룹 by pr.product_id UNION SELECT pr.id, MIN (pr.price), pr.product_id FROM price pr WHERE pr.price> = 5001 AND pr.price < = 10000 그룹 by pr.product_id

관련 문제