假设种族之间的关系,团队和汽车制造商都有很多:很多。一场比赛可以有多支车队,一支车队可以有很多汽车制造商,汽车制造商可以赞助很多车队,车队可以参加很多比赛。
使用odata-4,我如何选择所有的赛车由指定的制造商。
如果我想选择所有的比赛,包括id 475和476的车队,我会将我的odata查询形式为
Race$expand=Team($select=id,name)&$filter=((Team/any(c:((c/id eq 475) or (c/id eq 476)))))但是,如果我想选择所有以福特或雪佛兰汽车制造商为特色的车队,我将如何形成我的URL。
在SQL中,我只需要做:
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只是数据库中的许多到多个映射表。

发布于 2019-01-21 07:07:57
你可以试试这样的方法:
Race?$filter=Team/any(y:y/Manufacturer/any(z:z/name eq 'ford' or z/name eq 'chevy' ))&$expand=Team($expand=Manufacturer)如果没有端点,就很难得到正确的结果。还要确保您的Controller支持至少2的扩展深度。
我不认为这是一种长期使用的非常实用的方法。考虑使用静态端点,该端点对制造商品牌进行操作,作为参数。
干杯
https://stackoverflow.com/questions/54259827
复制相似问题