2014-03-03 31 views
0

結果我從包含一些表來讓像最多3個每組(商店,其價格)

ShopId ArticleId Price ArticleName 

    1  1a  2.00 Fahrrad 
    1  1b  3.00 Fahrrad 
    1  1c  4.00 Fahrrad 
    1  1d  9.99 Fahrrad 
    2  2a  2.00 Fahrrad 
    2  2b  3.10 Fahrrad 
    2  2c  3.50 Fahrrad 
    2  2d  9.99 Fahrrad 

最大。 3條款的每ShopId由min。作爲結果的價格,例如:

ShopId ArticleId Price ArticleName 

    1  1a  2.00 Fahrrad 
    1  1b  3.00 Fahrrad 
    1  1c  4.00 Fahrrad 
    2  2a  2.00 Fahrrad 
    2  2b  3.10 Fahrrad 
    2  2c  3.50 Fahrrad 

任何人都可以請幫忙嗎? 所以它就像min(Price)和ShopId組,但有3個結果不是1.

+0

向我們展示您到目前爲止的語法 –

+0

有一些答案和有用的鏈接和討論[here](http://stackoverflow.com/questions/12113699/get-top-n-records-for-each -group-的分組的-結果)。 – wwkudu

回答

0

給這個bash。不知道你的表的名稱,所以我把它叫做shopArticle

select t.ShopId,t.ArticleId,t.Price,t.ArticleName 
from 
(
select sa.*, 
      CASE sa.ShopId 
      WHEN @curShopId 
      THEN @curRow := @curRow + 1 
      ELSE @curRow := 1 AND @curShopId := sa.ShopId END rank 
from shopArticle sa 
join (SELECT @curRow := 0, @curShopId := '') r 
order by sa.ShopId,sa.Price asc 
) t 
where t.rank <=3; 
0

使用真實列名的結果是在短期形式: 集@cr:= 0,@cs:=「 「;

選擇s。 。ShopTitlep *, @cr:=如果(@cs = pShopId,@cr + 1,1)作爲cr, @cs:= pShopIdcs

affili_products2p力指數(初級) 左加入affili_shopsspShopId = sShopId

其中pKeywords like「%hobby%」

group by pShopIdpPrice 有cr < = 3 order by sShopTitle asc,pPrice asc