次の例は、2 つの等結合を作成します。1 つは Order Details テーブルと Orders テーブルとの間に、もう 1 つは Orders テーブルと Employees テーブルとの間に、それぞれ作成します。Employees テーブルには売上のデータは入っておらず、Order Details テーブルには社員のデータが入っていません。このため、これらの 2 つの結合が必要になります。このクエリでは、社員とその人の売上総額の一覧が出力されます。
この例では、EnumFields プロシージャを呼び出しています。EnumFields プロシージャの内容は SELECT ステートメントの例の中にあります。
Sub InnerJoinX()
Dim dbs As Database, rst As Recordset
'
この下の行を、使用しているコンピュータ上の
' Northwind
のパスに変更してください。
Set dbs = OpenDatabase("Northwind.mdb")
' Order Details
テーブルと Orders
テーブルとの間
'
および Orders
テーブルと Employees
テーブルとの間に
'
それぞれ結合を作成します。社員とその人の
'
売上総額の一覧を出力します。
Set rst = dbs.OpenRecordset("SELECT DISTINCTROW " _
& "Sum(UnitPrice * Quantity) AS Sales, " _
& "(FirstName & Chr(32) & LastName) AS Name " _
& "FROM Employees INNER JOIN(Orders " _
& "INNER JOIN [Order Details] " _
& "ON [Order Details].OrderID = " _
& "Orders.OrderID ) " _
& "ON Orders.EmployeeID = " _
& "Employees.EmployeeID " _
& "GROUP BY (FirstName & Chr(32) & LastName);")
' Recordset
を作成します。
rst.MoveLast
' EnumFields
を呼び出し、Recordset
の内容を
'
出力します。Recordset
オブジェクトと必要な
'
フィールド幅を渡します。
EnumFields rst, 20
dbs.Close
End Sub