我想显示一个用户从每个商店的购买摘要,最多从每个商店前3次购买。为了简单起见,购买数量是不可配置的。所以,它不是第一个n,而是第一个3
假设我有这些列的表
Store
id
name
Product
id
name
storeId
price
Purchase
id
userId
productId
count
purchaseTime
这就是我想展示的
-----------------------------------------------
| store | product | count | price |
-----------------------------------------------
| disney | stitch doll | 1 | 30 |
| | donald cap | 3 | 15 |
| | ticket | 2 | 100 |
-----------------------------------------------
| universal | iron man figure | 1 | 100 |
| | batman figure | 1 | 90 |
-----------------------------------------------
优选地,如果用户在两次单独的购买中购买唐老鸭(假设价格永远不会改变),那么购买的数量将被合并
例如:如果用户购买2个唐老鸭,然后购买1个唐老鸭,结果将是3个唐老鸭-而不是2唐老鸭和1唐老鸭
我正在使用hibernate和postgresql
我甚至不知道从哪里开始,尤其是如何将每家店的购买量限制为每家店3次
任何提示,psudo解决方案或解决方案将不胜感激
谢谢
注:不幸的是,我有一个重大疏忽。我想我想把每一个摘要放在一行中
例如
id | Store | Product1 | count1 | price1 | Product2 | count2 | price2 | Product3 | count3 | price3
----------------------------------------------------------------------------------------------------------------------------------
2 | Disney | stitch doll | 1 | 30 | donald cap | 3 | 15 | ticket | 2 | 100
5 | Universal | iron man figure | 1 | 100 | batman figure | 1 | 90 | null | null | null
原因是:我需要对结果分页-每页显示10个采购摘要如果每个摘要返回1-3行,则很难计算出下一页的结果
1条答案
按热度按时间kmynzznz1#
您可以使用横向联接检索每个商店的前3次购买:
或者,您可以使用
row_number()
: