2016-04-26 5 views
1

でグループ化されたから結果値を絞り込む:私は必要なものは、私は、次の表を持って行(クエリがサブクエリが含まれているため、ビューを作成することはできません)

---------------------------- 
| id | product | price | 
---------------------------- 
| 1 | 1  | 50  | 
| 2 | 1  | 39  | 
| 3 | 1  | 60  | 
---------------------------- 

は最低価格(39)は、製品ごとにグループ化され得ることです(1)と最低価格のid(2)を保つ。

私は

---------------------------- 
| id | product | price | 
---------------------------- 
| 1 | 1  | 39  | 
---------------------------- 

に結果でも、私が探している結果は、私はこれを使用して結果を得ることができた

---------------------------- 
| id | product | price | 
---------------------------- 
| 2 | 1  | 39  | 
---------------------------- 

あるこのクエリ

SELECT 
    id, 
    product, 
    MIN(price) AS price 
FROM 
    variant 
GROUP BY 
    product 

を持っていますクエリ

select B.id, A.* FROM 
(SELECT product,MIN(price) AS minprice 
FROM variant GROUP BY product) A 
JOIN variant B ON A.product = B.product and A.minprice = B.price 

でも、このクエリを使用してビューを作成する必要があります。また、from内に副選択があるため、VIEWを作成できません。

私が探していた結果を得る別の方法はありますか?

私はバイオリンを作った:http://sqlfiddle.com/#!9/d2ddb2

答えて

0

あなたは、代わりにサブクエリの最初のビューに参加するあなたのビューを作成サブクエリとして別のビュー、 を作成することができます。

CREATE VIEW min_variant AS 
SELECT product,MIN(price) AS minprice 
FROM variant 
GROUP BY product; 

CREATE VIEW min_product AS 
SELECT B.id, A.* 
FROM min_variant A 
INNER JOIN variant B 
ON A.product = B.product 
AND A.minprice = B.price; 

http://sqlfiddle.com/#!9/ea16c6/1

関連する問題