百倍
百倍
  • 发布:2021-04-13 07:58
  • 更新:2021-04-13 08:05
  • 阅读:2550

uniCloud JQL如何实现三联表查询?

分类:uniCloud

我尝试了以下方法,但查不出数据:

<unicloud-db ref="udb" collection="project-items,projects,goods" field="project_id{_id,name},good_id{_id,name}">  
</unicloud-db>

共有3个表,project-items项目清单表;projects项目表;goods商品表。

project-items表:
[{
item_gn:"23908239230",
amount:10,
project_id:"xiangmu1",
good_id:"shangping1",
},{
item_gn:"18880321532",
amount:20,
project_id:"xiangmu1",
good_id:"shangping2",
}]

projects表:
[{
_id:"xiangmu1",
name:"项目1"
}]

goods表:
[{
_id:"shangping1",
name:"商品1"
},
{
_id:"shangping2",
name:"商品2"
}]

希望得到联合查询结果:
[{
item_gn:"23908239230",
amount:10,
project_id:[{ _id:"xiangmu1",name:"项目1" }],
good_id:[{ _id:"shangping1",name:"商品1" }],
},
{
item_gn:"18880321532",
amount:20,
project_id:[{ _id:"xiangmu1",name:"项目1" }],
good_id:[{ _id:"18880321532",name:"商品2" }],
}]

2021-04-13 07:58 负责人:DCloud_uniCloud_WYQ 分享
已邀请:
名图客

名图客

查询条件为item_gn时:
where("item_gn=='23908239230'").field("project_id{_id,name},good_id{_id,name}")

查询条件为project_id时:
where(project_id._id=='${pid}').field("project_id{_id,name},good_id{_id,name}")

查询条件为good_id时:
where(good_id._id=='${gid}').field("project_id{_id,name},good_id{_id,name}")

  • 百倍 (作者)

    非常谢谢!没想到有了意外收获。我的重新调整了一下需求内容,你看看有办法实现吗?


    2021-04-13 08:34

  • 名图客

    回复 百倍: 要看你给的查询条件是什么,单项用==,多项用 in,混合查询用或与非,这与多少联表查询无关,联表查询只是主查询结果出来后,使用外键关联,附加上去的数据。


    2021-04-13 10:04

  • 名图客

    联表唯一影响主查询的是,当使用了联表查询,where查询条件的变化。需要根据预期联表的结果来配置where条件。比如,要获取外键的project_id{_id,name},那么,where条件就不能再使用project_id,而是project_id._id 。多了个._id,也就是所谓的结果导向。


    2021-04-13 10:07

该问题目前已经被锁定, 无法添加新回复