2015-04-22 98 views
0

我有以下表SQL連接不工作

1. tblJobs 

JobID  int primary key 

JobTypeID int 

JobClientID int 

JobStaffID int 

.... 

2. tblContacts 

ContactID int primary key 

ContactName varchar 

.... 

3. tblJobTypes 

TypeID  int primary key 

TypeName varchar 

我可以從這些表與此SQL SELECT資料...

SELECT tblContacts.ContactName, tblContacts.ContactID, 
tblJobs.JobID, tblJobs.JobTypeID, tblJobs.JobClientID, tblJobs.JobStaffID, 
tblJobTypes.* FROM (tblJobs LEFT JOIN tblJobTypes ON tblJobs.JobTypeID = tblJobTypes.TypeID) LEFT JOIN tblContacts ON tblJobs.JobClientID = tblContacts.ContactID; 

從SQL的一個例子排...

| ContactName| ContactID | JobID | JobTypeID | JobClientID | JobStaffID |TypeID | TypeName | 

| Mr Contact |  290 | 341 |   3 |   290 |  202 |  3 | Enquiry | 

正如您所見,此SQL將tblJobs.JobClientID連接到tblContacts.ContactID(290)。 這就是我如何獲得tblContacts.JobStaffID(202)。

如何修改SQL以獲取tblContacts.ContactName?

我試過兩次連接表,但沒有成功。

+3

你是什麼意思?你的'SELECT'中有tblContacts.ContactName。 – HoneyBadger

+0

查詢人難以閱讀,更好地提供一些示例數據和預期輸出。 –

回答

2

假設JobStaffID是與tblContacts.ContactID你在假設你需要加入tblContacts表兩次正確的外鍵 - 但你必須給它不同的別名,在每個參加這樣的:

SELECT 
    c1.ContactName as ClientName, c1.ContactID as ClientID, 
    c2.ContactName as StaffName, c2.ContactID as StaffID, 
    j.JobID, j.JobTypeID, j.JobClientID, j.JobStaffID, 
    jt.TypeID, jt.TypeName  
FROM tblJobs j 
LEFT JOIN tblJobTypes jt ON j.JobTypeID = jt.TypeID 
LEFT JOIN tblContacts c1 ON j.JobClientID = c1.ContactID 
LEFT JOIN tblContacts c2 ON j.JobStaffID = c2.ContactID; 

而在此時您可能想要爲所有表使用別名來減少查詢文本。

+0

jpw的回答讓我走上了正軌。它在這裏說,爲了避免像'謝謝'這樣的評論,我該如何爲這個答案「投票」呢? –