2013-10-14 15 views
14

tôi có nhiều bảng trong một cơ sở dữ liệu:Access-SQL: Nội Tham gia với nhiều bảng

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 

tôi cần phải có một câu lệnh SQL trong đó tôi có thể nhận được giá trị này:

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

cách w bị bệnh tôi nhận được mã này trong SQL bằng cách sử dụng những phương pháp tham gia ... im viết nó trong VB6 ADODC, là cú pháp này trong một SQL tiêu chuẩn? nhờ

+1

Tiêu đề câu hỏi của bạn hiện đề cập đến "nhiều cơ sở dữ liệu", nhưng văn bản câu hỏi của bạn nói về "nhiều bảng trong cơ sở dữ liệu". Vui lòng [edit] (http://stackoverflow.com/posts/19367565/edit) câu hỏi của bạn để làm rõ liệu bạn có đang giao dịch chỉ với một cơ sở dữ liệu hay không. –

Trả lời

54

Nếu bạn đang viết một truy vấn đối với một phụ trợ cơ sở dữ liệu Access, bạn cần phải sử dụng những sản phẩm sau gia nhập cú pháp:

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 

Bảng và cột tên không quan trọng ở đây, nhưng vị trí của dấu ngoặc đơn Là. Về cơ bản, bạn cần có các dấu ngoặc đơn bên trái n - 2 sau mệnh đề from và một dấu ngoặc đơn bên phải trước khi bắt đầu mỗi mệnh đề mới join ngoại trừ trường hợp đầu tiên, trong đó n là số lượng bảng được nối với nhau.

Lý do là cú pháp nối của Access chỉ hỗ trợ nối hai bảng cùng một lúc, vì vậy nếu bạn cần tham gia nhiều hơn hai bảng, bạn cần phải đính kèm các ký tự thừa trong dấu ngoặc đơn.

+0

hi, tôi đã thử cách tiếp cận của bạn: CHỌN 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 TRÊN tblOjt.studentid = tblStudent.id) INNER THAM GIA tblCompany ON tblOjt.companyid = tblCompany.id) INNER JOIN tblAddressee TRÊN tblOjt.addresseeid = tblAddressee.id; tuy nhiên, nếu tôi chạy nó trong SQL, msAccess yêu cầu tôi nhập giá trị tham số vào tblAddressee.addressee .. tôi không thể hoàn thành nó một cách hoàn hảo .. –

+0

/tblAddressee.addresseename.đó là những gì msAccess đang yêu cầu tôi nhập một tham số vale –

+1

figured it out, tôi không có tblAddressee.addresseename, tôi có tblAddressee.addressee cảm ơn thông tin :) –

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 

tìm thấy nó! Nhờ vào cách tiếp cận Yawar của ...

0

đã cố gắng để chạy SQL này bằng VBA nhưng sẽ không chạy bằng DoCmd.RunQuery. Tôi đã thử SQL và nó làm việc mặc dù.

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"