我很难找到解决上述问题的方法。这是详细信息。
假设我们有表X,其中包含不同的产品,并且每个产品都有唯一的整数ID和唯一的代码。我们还有表Y,它包含表X中每种产品的不同变体,它们在产品名称,长度,宽度等方面都有细微变化。因此,在表之间定义了一对多关系X 和表Y 。
前端显示所有这些产品变体,并允许从列表中选择它们,并将所有选择的产品详细信息导出到pdf。但是,有一种奇怪的选择方式:如果用户点击了某个产品,则所有具有相同唯一代码的产品变体都会被选择 if ,它们在同一列表中。也就是说,基本上,每当选择了一个产品变体时,就会在列表中选择完整的产品及其所有变体。但是,如果用户需要,他们可以根据需要分别取消选择每个产品变体。
表Z 包含所有导出的产品型号ID的日志。因此看起来像这样
id | export_at | export_by | product_variant_ids
1 |一些日期时间|一些用户| {1,2,3,4}
2 |一些日期时间|一些用户| {3,4}
3 |一些日期时间|一些用户| {6,8,9}
4 |一些日期时间|一些用户| {1,6,7}
5 |一些日期时间|一些用户| {3,5,7}
以此类推。
在这里您会发现:
1.在每一行中,产品变体ID只能在数组中出现一次
2.但是,产品变体ID可以出现在不同的行
我想针对所有行中每个出现的唯一商品变体ID ,计算它们在每行中出现的频率之和。
例如,在上面的虚拟表中,产品变体ID 1 在整个表中恰好出现两次,分别在第1行和第4行。同样,产品变体ID 3 ,位于第1、2和5行。
我试图天真地计算它,例如
朴素的算法:
从整个表中存在的所有唯一ID的集合中,
行检查每个集合中是否存在集合中的每个唯一ID 排
并每次增加计数器。
我不知道如何为其编写子查询,因此,我无法在postgres控制台上试用任何查询。
使用SQLAlchemy之类的ORM时,只有15到20个日志后,操作会非常缓慢。
任何人都可以朝正确的方向引导我,什么是更有效的解决方案?