it-swarm.com.de

Access-SQL: Innerer Join mit mehreren Tabellen

ich habe mehrere Tabellen in einer Datenbank:

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

ich brauche eine SQL-Anweisung, in der ich diese Werte erhalten kann:

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

wie bekomme ich diesen Code in SQL mit diesen Join-Methoden ... wenn ich ihn in VB6 ADODC schreibe, ist dies die gleiche Syntax in einer Standard-SQL? Vielen Dank

13
Kay Singian

Wenn Sie eine Abfrage gegen ein Access-Datenbank-Backend schreiben, müssen Sie die folgende Join-Syntax verwenden:

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

Die Tabellen- und Spaltennamen sind hier nicht wichtig, die Platzierung der Klammern ist jedoch wichtig. Grundsätzlich müssen Sie nach der from-Klausel n - 2 linke Klammern und vor dem Beginn jeder neuen join-Klausel eine rechte Klammer angeben, mit Ausnahme der ersten, wobei n die Anzahl der Tabellen ist, die zusammengefügt werden .

Der Grund ist, dass die Verknüpfungssyntax von Access das Verknüpfen von nur zwei Tabellen gleichzeitig unterstützt. Wenn Sie mehr als zwei verknüpfen möchten, müssen Sie die zusätzlichen in Klammern einschließen.

57
Yawar
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

habe es gefunden, dank Yawars Ansatz ...

2
Kay Singian

habe versucht, diese SQL mit VBA auszuführen, aber nicht mit DoCmd.RunQuery. Ich habe die SQL ausprobiert und es funktioniert zwar. 

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"
0
Angelo Viray