为sqlalchemy / postgresql

时间:2019-02-03 03:54:57

标签: postgresql sqlalchemy

我很难找到解决上述问题的方法。这是详细信息。

假设我们有表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个日志后,操作会非常缓慢。

任何人都可以朝正确的方向引导我,什么是更有效的解决方案?

0 个答案:

没有答案