SQL-запрос с двумя самостоятельными соединениями - есть ли лучший способ - PullRequest
0 голосов
/ 12 марта 2019

Не могли бы вы помочь с этим запросом, пожалуйста.

Структура таблицы выглядит следующим образом:

PropertyOwner

  • Номер (первичный ключ)
  • PropertyId (первичный ключ)
  • OwnerId

Недвижимость

  • PropertyId (первичный ключ)
  • LoanId (первичный ключ)

Теперь, если у меня есть LoanId, как я могу найти все свойства свойства ownerId, которые взяли данный LoanId?

У меня сейчас ниже, но выглядит неловко:

Select po.OwnerId, po.PropertyId
from Property
join PropertyOwner po on po.PropertyId= Property.PropertyId
join PropertyOwner po2 on po2.OwnerId = po.OwnerId 
join Property pp on po2.PropertyId= pp.PropertyId and pp.LoanId = @_givenLoanId

Есть ли лучший способ?

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Exists приходит на ум как более прямое толкование того, что вы делаете:

Select po.OwnerId, po.PropertyId
from PropertyOwner po
where exists (select 1
              from Property p2 join
                   PropertyOwner po2
                   on p2.PropertyId = po2.PropertyId
              where po2.OwnerId = po.OwnerId and
                    p2.LoanId = @_givenLoanId
             );
0 голосов
/ 12 марта 2019

Это то, что вы ищете:

SELECT OwnerId, PropertyId
FROM PropertyOwner
WHERE OwnerId IN 
(
    SELECT DISTINCT o.OwnerId
    FROM Property p 
    JOIN PropertyOwner o
        ON o.PropertyId = p.PropertyId
    WHERE LoanId = @_givenLoanId
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...