Я очень новичок в SQL / TypeORM в целом, и в настоящее время я сталкиваюсь с проблемой, когда я хочу загрузить участников матча, связанных с совпадением, в котором хотя бы один участник имеет переданный идентификатор пользователя. Запрос можно представить как «Загрузить все мои матчи с моими противниками». У меня есть три таблицы:
publi c .match << OneToMany >> publi c .match_participant << ManyToOne >> publi c .user
Пока что я пошел о выполнении:
select * from public.match m
left join public.match_participant mp on mp."matchId" = m.id
left join public.user u on u.id = mp."userId"
where u.id = 3
и в typeORM
repository
.createQueryBuilder('match')
.leftJoinAndSelect('match.participants', 'participants')
.leftJoinAndSelect('participants.user', 'user')
.where('user.id=:id')
.setParameter('id', 1)
.getMany();
Что, конечно, загружает все совпадения, участников и пользователей для этого конкретного userId, но другие участники не включены. Я считаю, что что-то вроде "подзапроса" может быть полезно, но я не могу понять этого.
Любая помощь приветствуется!
Заранее спасибо.