Give this a bash. Don't know the name of your table so I've called it 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;