【发布时间】:2019-01-18 18:48:04
【问题描述】:
假设 Race、Team 和 Car Manufacturer 之间的关系都是多:多。一场比赛可以有很多车队,一个车队可以有很多汽车制造商,汽车制造商可以赞助很多车队,车队可以参加很多比赛。
使用 odata v-4,如何选择指定制造商的所有赛车比赛。
如果我想选择所有比赛,包括 id 为 475 和 476 的团队,我会将我的 odata 查询形成为
Race$expand=Team($select=id,name)&$filter=((Team/any(c:((c/id eq 475) or (c/id eq 476)))))
但是,如果我想选择使用福特或雪佛兰汽车制造商车队的所有比赛,我将如何形成我的网址。
在 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 只是数据库中的多对多映射表。
【问题讨论】: