Помогите со сложным SQL-запросом (много объединений?) - PullRequest
0 голосов
/ 08 августа 2011

В этот запрос включены две базы данных и 4 таблицы.Первая база данных (PhoneBills) содержит первую таблицу (CallDetails), и в ней есть столбцы для:

  1. [Время] (время начала)
  2. [От] (номер звонящего)
  3. [Кому] (целевой номер)
  4. [Стоимость] (в деньгах)
  5. [Длина] (как долго называется)

Интересующие столбцы: [От] и [Кому].

Во второй базе данных (rtc - это БД постоянных данных Lync) есть три представляющие интерес таблицы:

  1. Resource (соответствует ResourceID имени пользователя)
  2. ResourceDirectory (определяет время, в которое ResourceID был вставлен и когда он последний раз обновлялся)
  3. ResourcePhone (сопоставляет ResouceID с номером телефона)

Честно говоря, я не знаю, что определяет ResourceDirectory, я предполагаю, что номера телефонов, с которыми сопоставляются имена пользователей, могут измениться, и каталог отслеживает это время.В целях упрощения я пока проигнорирую эту часть.

Я пытаюсь добиться получения имени пользователя из ресурса, если я могу найти соответствие для своего номера телефона в ResourcePhone.

Ответы [ 2 ]

2 голосов
/ 08 августа 2011

Разве это не сработает?

SELECT Username
FROM Resource R
JOIN ResourcePhone RP on R.ResourceID = RP.ResourceID
WHERE RP.phonenumber = '1111111111'
0 голосов
/ 08 августа 2011

Не проверено. У меня не было кофе этим утром. Вы были предупреждены.

select 
  pb.Time, 
  pb.From, r1.Username as FromName, 
  pb.To,   r2.Username as ToName, 
  pb.Cost, pb.Length
from PhoneBills pb
inner join ResourcePhone rpfr on rpfr.PhoneNumber = pb.From
inner join ResourcePhone rpto on rpto.PhoneNumber = pb.To
inner join Resource r1 on r1.ResourceID = rpfr.ResourceID
inner join Resource r2 on r2.ResourceID = rpto.ResourceID

Присоедините телефонные счета к ResourcePhone, чтобы получить доступ к ResourceID для определенного номера телефона. Затем присоедините этот ResourceID к таблице Resource, чтобы получить доступ к имени пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...