2013-10-14 135 views
14

我有一個數據庫中的多個表:訪問-SQL:內部連接多個表

tblOjt

ID studentid courseid companyid addresseeid dateadded datestarted dateended ojthours 

1   3   1   1    1   9/25/2013         500 

tblStudent

ID lastname firstname middlename course gender renderedhours dateadded archive 

3  Dela Cruz  Juan  Santos  BSIT  Male   500 

tblCourse

ID coursealias coursename           hours 
1   BSIT  Bachelor of Science in Information Technology   500 

tblCompany

ID companyname 

1  MyCompany 

tblAddressee

ID addresseename 

1  John dela Cruz 

我需要有一個SQL語句中,我能得到這個值:

tableOjt.id tableOJT.surname,firstname, and middlename course companyname addresseename dateadded datestarted dateended ojthours 

如何w ^生病我使用這些連接方法在SQL中獲取此代碼...即時通訊編寫它在VB6 ADODC,這是在一個標準的SQL相同的語法?感謝

+1

你的問題標題目前提到「多個數據庫」,但你的問題文本談論「數據庫中的多個表」。請[編輯](http://stackoverflow.com/posts/19367565/edit)你的問題,以澄清你是否只處理一個數據庫。 –

回答

54

如果你正在編寫針對Access數據庫後端的查詢時,您需要使用以下聯接語法:

select 
    t1.c1 
, t2.c2 
, t3.c3 
, t4.c4 
from ((t1 
inner join t2 on t1.something = t2.something) 
inner join t3 on t2.something = t3.something) 
inner join t4 on t3.something = t4.something 

的表和列名在這裏並不重要,但括號中的位置是。基本上,除了第一個,其中n是要連接在一起的表的數量,您需要在每個新的join子句開始之前在from子句之後有一個右括號,並且必須有n-2子句。

原因是Access的連接語法一次只支持連接兩個表,所以如果你需要連接兩個以上的連接,你需要用括號括起來。

+0

嗨,我試過你的方法:SELECT tblOjt.id,tblStudent.firstname,tblStudent.middlename,tblStudent.lastname,tblStudent.course,tblCompany.companyname,tbAddressee.addressee,tblOjt.dateadded,tblOjt.datestarted,tblOjt.dateended,tblOjt .ojthours FROM((tblOjt INNER JOIN tblStudent ON tblOjt.studentid = tblStudent.id)INNER JOIN tblCompany ON tblOjt.companyid = tblCompany.id)INNER JOIN tblAddressee ON tblOjt.addresseeid = tblAddressee.id;然而,如果我在SQL中運行它,msAccess會要求我輸入參數值給tblAddressee.addressee ..我無法完美解決它.. –

+0

/tblAddressee.addresseename。這就是msAccess要求我輸入參數谷 –

+1

算了一下,我沒有tblAddressee.addresseename,我有tblAddressee.addressee感謝信息:) –

1
SELECT tblOjt.id, tblStudent.firstname, tblStudent.middlename, 
     tblStudent.lastname, tblStudent.course, tblCompany.companyname, 
     tblAddressee.addressee 
FROM (((tblOjt 
    INNER JOIN tblStudent ON tblOjt.studentid = tblStudent.id) 
    INNER JOIN tblCourse ON tblOjt.courseid = tblCourse.id) 
    INNER JOIN tblCompany ON tblOjt.companyid = tblCompany.id) 
    INNER JOIN tblAddressee ON tblOjt.addresseeid = tbladdressee.id 

找到了!感謝亞瓦爾的做法...

0

一直試圖運行使用VBA這個SQL但使用DoCmd.RunQuery將無法運行。我已經嘗試了SQL,但它的工作。

str = "SELECT tbl_company.[Company], tbl_company.[Commodity], tbl_company.[Segment], tbl_company.[MainProduct]," & _ 
     " tbl_financials.[DataYear]," & _ 
     " mstr_financial.[FinancialData]," & _ 
     " tbl_financials.[Amount]," & _ 
     " tbl_financials.[Unit]," & _ 
     " tbl_company.[CompanyID]" & _ 
     " FROM (tbl_company" & _ 
     " INNER JOIN tbl_financials ON tbl_company.[CompanyID] = tbl_financials.[CompanyID])" & _ 
     " INNER JOIN mstr_financial ON tbl_financials.[FinID] = mstr_financial.[FinID] " & _ 
     " ORDER BY tbl_company.[Company], tbl_financials.[DataYear] DESC"