You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hasura中含整数数组列的表与其他表关联及用户数查询方法

Hasura整数数组列关联与用户计数实现

前提假设

假设你的表结构如下:

  • Users表:包含主键id,以及product_ids(integer[]类型,存储用户关联的产品ID列表)
  • Products表:包含主键id、name字段

方法一:通过自定义SQL函数实现计数

  1. 创建统计用户数的SQL函数
    在数据库中执行以下SQL,创建稳定函数统计指定产品的关联用户数量:
CREATE OR REPLACE FUNCTION count_users_for_product(product_id integer)
RETURNS integer AS $$
SELECT COUNT(*) FROM users WHERE product_id = ANY(users.product_ids);
$$ LANGUAGE sql STABLE;
  1. 在Hasura中配置计算字段
  • 打开Hasura控制台,进入Products表的修改页面
  • 找到「计算字段」选项,点击「添加计算字段」
  • 选择刚才创建的count_users_for_product函数,将字段名设置为number_of_users,参数绑定为Products表的id字段
  1. 编写GraphQL查询
    直接查询目标格式的数据:
query {
  products {
    id
    name
    number_of_users
  }
}

方法二:通过手动创建数组关系实现计数

  1. 在Hasura中创建数组关系
  • 进入Products表的修改页面,找到「关系」选项,点击「添加关系」
  • 关系类型选择「数组关系」,关联到Users表
  • 关联条件设置为:Users.product_ids @> ARRAY[Products.id]::integer[](即Users表的product_ids数组包含当前产品ID)
  • 将关系命名为related_users
  1. 编写带聚合计数的查询
    通过聚合查询获取用户数量,可使用别名匹配目标字段名:
query {
  products {
    id
    name
    number_of_users: related_users_aggregate {
      aggregate {
        count
      }
    }
  }
}

内容的提问来源于stack exchange,提问作者MrCorn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:35:20