我想弄清楚如何顯示每個類別的一定數量的產品和按銷售數量過濾。我似乎無法弄清楚。如何根據類別限制和顯示結果?
可以說我的數據庫「mysql」中有100個產品處於5個不同的類別,我想每頁顯示10個結果,但每個類別顯示2個結果每頁,並按number_of_sales過濾從最高到最低。什麼是最好的方式去做這件事?
我有一個測試表已經創建,我在這6列這是ID,PRODUCT_ID,PRODUCT_NAME,類別,CATEGORY_ID,number_of_sales
id, product_id, product_name, category, category_id, number_of_sales
1 | 1 | product1 | category1 | 1 | 5
2 | 2 | product2 | category1 | 1 | 10
3 | 3 | product3 | category1 | 1 | 15
4 | 4 | product4 | category1 | 1 | 4
5 | 5 | product5 | category1 | 1 | 6
6 | 6 | product6 | category2 | 2 | 14
7 | 7 | product7 | category2 | 2 | 6
8 | 8 | product8 | category2 | 2 | 1
9 | 9 | product9 | category2 | 2 | 0
10 | 10 | product10 | category2 | 2 | 2
11 | 11 | product11 | category3 | 3 | 17
12 | 12 | product12 | category3 | 3 | 2
13 | 13 | product13 | category3 | 3 | 6
14 | 14 | product14 | category3 | 3 | 4
15 | 15 | product15 | category3 | 3 | 7
16 | 16 | product16 | category4 | 4 | 3
17 | 17 | product17 | category4 | 4 | 8
18 | 18 | product18 | category4 | 4 | 7
19 | 19 | product19 | category4 | 4 | 1
20 | 20 | product20 | category4 | 4 | 0
21 | 21 | product21 | category5 | 5 | 6
22 | 22 | product22 | category5 | 5 | 4
23 | 23 | product23 | category5 | 5 | 7
24 | 24 | product24 | category5 | 5 | 8
25 | 25 | product25 | category5 | 5 | 5
我已經在一個while循環嘗試了許多不同的查詢,並有未能實現正確的輸出。我能夠得到的最好結果是要顯示5個結果,每個類別使用分組依次排列最高或最低銷售額。
編輯:
輸出樣本。有點像這樣。
1 product11 | category3 | 3 | 17
2 product3 | category1 | 1 | 15
3 product6 | category2 | 2 | 14
4 product2 | category1 | 1 | 10
5 product17 | category4 | 4 | 8
6 product15 | category3 | 3 | 7
7 product18 | category4 | 4 | 7
8 product23 | category5 | 5 | 7
9 product7 | category2 | 2 | 6
10 product21 | category5 | 5 | 6
這將是更清晰如果您發佈期望的輸出示例,如示例表。 –
這種類型的查詢在MySQL中很棘手。 –
https://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of-grouped-results –