帮助复杂的SQL查询(很多JOIN?)

时间:2011-08-07 21:52:51

标签: sql sql-server-2008

此查询涉及两个数据库和4个表。第一个数据库(PhoneBills)包含第一个表(CallDetails),其中包含以下列:

  1. [时间](开始时间)
  2. [来自](来电号码)
  3. [To](目标号码)
  4. [费用](以金钱计算)
  5. [长度](召唤多长时间)
  6. 这里感兴趣的列是[From]和[To]。

    在第二个数据库(rtc - 这是一个Lync持久性数据DB)中,有三个感兴趣的表:

    1. 资源(将ResourceID与用户名匹配)
    2. ResourceDirectory(定义插入ResourceID的时间以及上次更新的时间)
    3. ResourcePhone(将ResouceID与phonenumber匹配)
    4. 我真的不知道ResourceDirectory定义了什么,我猜测用户名匹配的电话号码可以改变,并且目录会记录那些时间。出于简化的目的,我暂时忽略这一部分。

      我想要实现的是从资源获取用户名,因为我可以在ResourcePhone中找到与我的电话号码匹配的内容。

2 个答案:

答案 0 :(得分:2)

这不会起作用吗?

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

答案 1 :(得分: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

将PhoneBills加入ResourcePhone以访问特定电话号码的ResourceID。然后将该ResourceID加入表Resource以访问用户名。