2017-01-26 9 views
-1

のMysql、個別カウンタ

id Company Name Price 
1 xxx  namea 1 
2 xxx  nameh 1.1 
3 xxx  nameg 2 
4 yyy  namef 1.5 
5 zzz  named 1.7 
6 zzz  names 0.9 

あなたは私たちが会社のために数をカウントし、それがページネーションのために適切に動作するはずです見ることができるように私は

dCounter Company Name Price 
1   xxx  namea 1 
1   xxx  nameh 1.1 
1   xxx  nameg 2 
2   yyy  namef 1.5 
3   zzz  named 1.7 
3   zzz  names 0.9 

このような結果を必要としています。つまり、各ページにx2のエントリがある場合、3番目のページにdCounter 1と2があります。

問題はdCounterにあります。これは各ページで再度カウントする必要があるためです。 「会社ASC、名前ASC、価格ASC」による注文。

どのようにしてこのクエリを作成する必要がありますか?

答えて

0

これは、会社ごとにランク()を計算します。

select 
    @rn := case when @company <> company then @rn + 1 else @rn end as rn, 
    @company := company as cia, 
    Name, 
    Price 
from 
    (select @rn := 0) i, 
    (select @company := company as company, Name, Price 
    from ff order by company) t; 

結果:

+----+-----+-------+-------+ 
| rn | cia | Name | Price | 
+----+-----+-------+-------+ 
| 1 | xxx | namea | 1,00 | 
+----+-----+-------+-------+ 
| 1 | xxx | nameh | 1,10 | 
+----+-----+-------+-------+ 
| 1 | xxx | nameg | 2,00 | 
+----+-----+-------+-------+ 
| 2 | yyy | namef | 1,50 | 
+----+-----+-------+-------+ 
| 3 | zzz | named | 1,70 | 
+----+-----+-------+-------+ 
| 3 | zzz | names | 0,90 | 
+----+-----+-------+-------+ 

は、ここでそれを確認することができます:http://rextester.com/ACY4401

関連する問題