2011-08-07 111 views
0

有两个数据库,并参与了该查询4桌。第一个数据库(PhoneBills)包含第一个表(CallDetails),并在此有对列:帮助的复杂SQL查询(很多JOIN的吗?)

  1. [时间](开始时间)
  2. [从](主叫号码)
  3. [为了(目标数)
  4. [费用](货币)
  5. [长度(多长时间调用)

感兴趣的列这里[从]和[为了]。

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

  1. 资源(匹配资源ID到用户名)
  2. ResourceDirectory(定义时间一个资源ID为插入时,它最后更新)
  3. ResourcePhone(匹配ResouceID到PHONENUMBER)

老实说,我不知道是什么ResourceDirectory定义,我GUE认为用户名匹配的电话号码可以改变,并且目录跟踪那些时间。为了简化,我现在将忽略这部分。

我所试图实现的是摆脱资源因为我可以找到在ResourcePhone我的电话号码匹配的用户名。

+0

他在哪里第一台'CallDetails'来到这个问题呢? - 它只是一个资源和ResourcePhone –

+0

[CallDetails]拥有一个电话号码之间用[资源ID],[资源]对的[资源ID]使用用户名加入,[ResourcePhone]对电话号码了。我试图让在[CallDetails] – CodeMinion

回答

2

不会在工作?

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

哇数量的用户名,那是快!作为一个SQL新手,我只是不停地跑入语法或逻辑错误:)谢谢Hogan! – 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 

加入PhoneBills到ResourcePhone获得访问资源ID为特定的电话号码。然后将该ResourceID加入表资源以访问用户名。