Предполагая, что отношения между Гонкой, Командой и Производителем Автомобилей очень много: много. В гонке может участвовать много команд, в команде может быть много производителей автомобилей, производители автомобилей могут спонсировать много команд, а команды могут участвовать во многих гонках.
Используя odata v-4, как выбрать все гонки с участием автомобилей указанных производителей.
Если бы я хотел выбрать все расы, включая Команду с идентификатором 475 и 476, я бы сформировал свой запрос на данные как
Race$expand=Team($select=id,name)&$filter=((Team/any(c:((c/id eq 475) or (c/id eq 476)))))
Но как бы я сформировал свой URL, если бы я хотел выбрать все гонки с участием команд, которые используют производителя автомобилей с Ford или Chevy.
В 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 - это просто множество таблиц сопоставления в базе данных.