2011-08-07 3 views
0

このクエリには2つのデータベースと4つのテーブルがあります。最初のデータベース(PhoneBills)は最初のテーブル(CallDetails)が含まれており、この内のカラムがあります。複雑なSQLクエリのヘルプ(たくさんのJOIN?)

  1. が[時間](開始時刻)
  2. (発信者番号)より] [へ](目標数)
  3. [コスト](お金で)
  4. [長さ](長いと呼ばれる方法)

ここで関心の列がより]と[]に[です。

  1. リソース(一致するユーザ名にRESOURCEID)
  2. ResourceDirectory(のResourceIDがあった時間を定義: -

    は、第二のデータベース(RTCこれはLyncの永続データDBである)で関心の3つのテーブルがあります挿入され、それが最後に更新されました)

  3. ResourcePhone(PHONENUMBERにResouceIDと一致する)

私は正直に私がGUE午前、ResourceDirectoryが定義されているかわかりませんユーザー名が一致する電話番号が変更され、ディレクトリにその時刻が記録されます。簡素化のために、私は今この部分を無視します。

私が達成しようとしているのは、ResourcePhoneで自分の電話番号に一致するものが見つかった場合、ResourceからUsernameを取得することです。

+0

最初に「CallDetails」テーブルが問題になるのはどこですか? - リソースと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の初心者として、私は構文やロジックのエラーに走っていた:) Thanks 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 

特定の電話番号のResourceIDにアクセスするには、PhoneBills to ResourcePhoneに参加してください。その後、そのResourceIDを表Resourceに結合して、ユーザー名にアクセスします。