2011-08-07 4 views
0

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

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

столбцы интерес здесь [с] и [К].

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

  1. ресурсов (спички ResourceId к имени пользователя)
  2. ResourceDirectory (определяет Раз ResourceId было Поставлен и когда это было в последний раз обновлено)
  3. ResourcePhone (соответствует ResouceID к PHONENUMBER)

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

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

+0

Где он первый стол «CallDetails» входит в проблему? - Его просто соединение между Resource и ResourcePhone –

+0

[CallDetails] содержит номер телефона, номер [ResourcePhone] с номером телефона [ResourceID], [Resource] - [ResourceID] с именем пользователя. Я пытаюсь получить имя пользователя в номере [CallDetails] – CodeMinion

ответ

2

Не будет работать?

SELECT Username 
FROM Resource R 
JOIN ResourcePhone RP on R.ResourceID = RP.ResourceID 
WHERE RP.phonenumber = '1111111111' 
+0

Вау, это было быстро! Как новичок sql, я просто продолжал сталкиваться с синтаксическими или логическими ошибками :) Спасибо, Хоган! – CodeMinion

+0

Добро пожаловать, удачи. – Hogan

0

Не проверено. У меня сегодня не было кофе. Вас предупредили.

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 

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

Смежные вопросы