j'ai plusieurs tables dans une base de données:
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
tbl Destinataire
ID addresseename
1 John dela Cruz
j'ai besoin d'une déclaration SQL dans laquelle je peux obtenir ces valeurs:
tableOjt.id tableOJT.surname,firstname, and middlename course companyname addresseename dateadded datestarted dateended ojthours
comment vais-je obtenir ce code dans SQL en utilisant ces méthodes de jointure ... im l'écrivant en VB6 ADODC, est-ce la même syntaxe dans un SQL standard? Merci
Si vous écrivez une requête sur un backend de base de données Access, vous devez utiliser la syntaxe de jointure suivante:
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
Les noms de table et de colonne ne sont pas importants ici, mais l'emplacement des parenthèses l'est. En principe, vous devez avoir n - 2 des parenthèses de gauche après la clause from
et une parenthèse de droite avant le début de chaque nouvelle clause join
, à l'exception de la première, où n est le nombre de tables jointes .
La raison en est que la syntaxe de jointure d'Access permet la jonction de deux tables à la fois. Par conséquent, si vous devez en joindre plus de deux, vous devez placer celles qui restent entre parenthèses.
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
trouvé grâce à l'approche de Yawar ...
été en train d’exécuter ce SQL avec VBA mais pas avec DoCmd.RunQuery J'ai essayé le SQL et ça marche bien.
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"