2013-10-14 11 views
14

ich habe mehrere Tabellen in einer Datenbank:Zugang-SQL: Inner Join mit mehreren Tabellen

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 haben, in denen ich diese Werte zu erreichen:

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

wie w Ich bekomme diesen Code in SQL mit diesen Join-Methoden ... ich schreibe es in VB6 ADODC, ist das die gleiche Syntax in einem Standard-SQL? Dank

+1

Ihr Fragentitel erwähnt derzeit "mehrere Datenbank", aber Ihr Fragetext spricht über "mehrere Tabellen in einer Datenbank". Bitte [bearbeiten] (http://stackoverflow.com/posts/19367565/edit) Ihre Frage zu klären, ob Sie nur mit einer Datenbank arbeiten. –

Antwort

54

Wenn Sie eine Abfrage für einen Access-Datenbank-Backend zu schreiben, müssen Sie Syntax folgendes beitreten 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, aber die Platzierung der Klammern ist. Grundsätzlich müssen Sie n - 2 linken Klammern nach der from Klausel und eine rechte Klammer vor dem Beginn jeder neuen join Klausel mit Ausnahme der ersten, wobei n ist die Anzahl der Tabellen zusammengefügt werden.

Der Grund dafür ist, dass die Join-Syntax von Access unterstützt, nur zwei Tabellen gleichzeitig zu verbinden. Wenn Sie also mehr als zwei verbinden müssen, müssen Sie die zusätzlichen in Klammern einschließen.

+0

Hallo, ich habe Ihren Ansatz versucht: 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.studentif = tblStudent.id) INNERER JOIN tblCompany ON tblOjt.companyid = tblCompany.id) INNERER JOIN tblAddressee ON tblOjt.addresseeid = tblAddressee.id; Allerdings, wenn ich es in SQL ausführen, fragt mich msAccess Parameterwert zu tblAddressee.addressee .. ich kann es nicht perfekt erarbeiten .. –

+0

/tblAddressee.addresseename.das ist, was msAccess mich fragt, um einen Parameter vale eingeben –

+1

fand es heraus, ich habe nicht tblAddressee.addresseename, ich habe tblAddressee.addressee danke für die info :) –

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 

es gefunden! Dank Yawar Ansatz ...

0

versucht, diese SQL VBA ausführen verwenden, aber wird mit DoCmd.RunQuery nicht ausgeführt werden. Ich habe versucht, die SQL und es funktioniert aber.