如何编写Hasura单查询:关联A、B表筛选b_num < a_num的B表数据
实现符合条件的Hasura关联查询
如果已经在Hasura控制台中给B表的a_id字段设置了指向A表a_id的外键关联,直接用下面的GraphQL查询就能筛选出b_num < a_num的B表行数据:
query FilterQualifiedBRows { B(where: { a: { a_num: { _gt: b_num } } }) { b_id b_num a_id # 可选:关联查询对应的A表数据 a { a_id a_num } } }
这个查询的逻辑是:利用Hasura自动生成的关联字段a(对应A表),通过_gt条件判断A表的a_num大于当前B行的b_num,等价于b_num < a_num。
如果需要从A表出发,查询每个A行对应的符合条件的B表数据,可以用这个查询:
query GetAWithQualifiedB { A { a_id a_num # 只筛选关联的B表中b_num小于当前a_num的行 B(where: { b_num: { _lt: a_num } }) { b_id b_num a_id } } }
注意事项
- 必须先在Hasura的Data页面中,为B表的
a_id字段建立指向A表a_id的外键关系,Hasura才会生成这些关联查询字段。
内容的提问来源于stack exchange,提问作者lokesh kumar
相关产品推荐
相关产品推荐

