PERSON
---------------------
ID NAME
1 ALEX
2 BOB
3 JAMES
PERSON_FRUIT
---------------------
PERSON_ID FRUIT_ID
1 1
2 1
3 2
FRUIT
---------------------
ID NAME
1 APPLE
2 ORANGE
Как написать запрос, который проверяет, есть ли у одного человека один и тот же плод? Мне нужен запрос, который дает мне следующие результаты.Как получить общий ряд таблиц отношений ManyToMany
- Если я перейду в ALEX и BOB, он вернет фрукты, которые у них есть, что есть APPLE.
- Если я перейду в ALEX, BOB и JAMES, он вернет 0 строк, потому что у них нет общих плодов.
Я пытался использовать ниже запрос
select
F.NAME
from
PERSON P1
join PERSON_FRUIT PF1 on P1.ID = PF1.PERSON_ID
join PERSON_FRUIT PF2 on PF1.FRUIT_ID = PF2.FRUIT_ID
join PERSON P2 on PF2.PERSON_ID = P2.ID
join FRUIT F on F.ID = PF1.FRUIT_ID
where
P1.ID = 1 and P2.ID = 2 and P1.ID <> P2.ID;
, чтобы получить общий плод ALEX и ЛПП, но этот запрос ограничен, чтобы пройти в 2-х человек только.
В какой СУБД не остается результатов? И я думаю, что другая проблема (не упомянутая) у вас есть, как передать различное количество идентификаторов людей. – niksofteng
Это просто делается в одном SQL-запросе или используется еще один бит кода? – Nerdwood
@vnikhil Я использую postgres, в настоящее время у меня есть способ принять два параметра (person1Id, person2Id), я бы хотел передать массив personIds, если бы нашел лучший SQL-запрос –