【问题标题】:SqlAlchemy/Postgresql ORM: Making a sub query that counts in instances of an ID in a jsonbSqlAlchemy/Postgresql ORM:进行子查询,计算 jsonb 中 ID 的实例
【发布时间】:2020-11-30 04:29:06
【问题描述】:

我想我几乎拥有它,但我的子查询似乎得到了每个对象的总数。不是包含特定 ID 的对象的计数。有人可以帮我修复它,以便它只计算所有具有相同 ID 的对象吗? 注意:这变得更复杂了,因为我要检查的 ID 在 JSONB 中。

我有两张桌子(我将大大简化我们的工作) 表 1:公司

  1. 身份证
  2. 姓名
  3. 等等..

表 2:消息数据:

  1. 身份证
  2. 数据(可能包含也可能不包含名为 company_id 的字段的 json blob)
  3. 等等..

我最终希望我的查询返回如下数据集:

ID : 00000000-0000-0000-0000-000000000000
Name: Random Company Name here
Message Count: 12

我当前的子查询看起来像这样(基于另一个堆栈溢出问题SQL Query that relies on COUNT from another table? - SQLAlchemy

session.query(MessageData.data['company_id'].label('company_id'), func.count('*').label('message_count')).group_by(MessageData.data['company_id']).subquery()

我的主要查询是这样的

使用解决方案编辑:我必须像示例中一样添加外连接

session.query(Company.id, Company.name, subquery.c.message_count).outerjoin(subquery, subquery.c.company_id == Company.id).all()

但消息计数始终具有相同的值,我假设它是 MessageData 的每个实例的计数,而不仅仅是包含该公司 ID 的实例的计数。

【问题讨论】:

    标签: postgresql orm sqlalchemy


    【解决方案1】:

    我不得不更改我的主要查询。上面编辑过

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 2022-01-24
      • 1970-01-01
      • 2013-12-20
      • 2021-09-21
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多