INNER JOIN 操作の使用例

次の例は、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