首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤包含在ODATA-v4中的2层层次结构

过滤包含在ODATA-v4中的2层层次结构
EN

Stack Overflow用户
提问于 2019-01-18 18:48:04
回答 1查看 318关注 0票数 1

假设种族之间的关系,团队和汽车制造商都有很多:很多。一场比赛可以有多支车队,一支车队可以有很多汽车制造商,汽车制造商可以赞助很多车队,车队可以参加很多比赛。

使用odata-4,我如何选择所有的赛车由指定的制造商。

如果我想选择所有的比赛,包括id 475和476的车队,我会将我的odata查询形式为

代码语言:javascript
复制
Race$expand=Team($select=id,name)&$filter=((Team/any(c:((c/id eq 475) or (c/id eq 476)))))

但是,如果我想选择所有以福特或雪佛兰汽车制造商为特色的车队,我将如何形成我的URL。

在SQL中,我只需要做:

代码语言:javascript
复制
SELECT *
FROM   race
WHERE  id IN ((SELECT raceid
               FROM   race_team
               WHERE  teamid IN (SELECT teamid
                                 FROM   team_carmanufacturer
                                 WHERE  carid IN (SELECT id
                                                  FROM   carmanufacturer
                                                  WHERE name IN
                                                 ( 'ford', 'chevy' )
                                                 )))) 

race_team、team_carmanufacturer只是数据库中的许多到多个映射表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 07:07:57

你可以试试这样的方法:

代码语言:javascript
复制
Race?$filter=Team/any(y:y/Manufacturer/any(z:z/name eq 'ford' or z/name eq 'chevy' ))&$expand=Team($expand=Manufacturer)

如果没有端点,就很难得到正确的结果。还要确保您的Controller支持至少2的扩展深度。

我不认为这是一种长期使用的非常实用的方法。考虑使用静态端点,该端点对制造商品牌进行操作,作为参数。

干杯

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54259827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档