INNER JOIN 运算示例

此示例创建了两个对等联接:一个是在订货明细表和订单表之间,另一个是在订单表和员工表之间。这是必需的,因为员工表不含业务人员数据,并且订货明细表不含员工数据。查询生成员工和他们的业绩列表。

此示例调用过程 EnumFields 过程,且可以在 SELECT 语句示例中找到该过程。

Sub InnerJoinX()

    Dim dbs As Database, rst As Recordset

    ' 在您的计算机中修改此行使其正确指到 Northwind 的路径。

    Set dbs = OpenDatabase("Northwind.mdb")

    ' 对运费超过 $100 的订单,

    

    ' 在订单明细和订单表之间创建联接

    '

    ' 并且在订单和员工表之间创建联接。列出员工和他们的业绩

    '

    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);")

    

    ' populateRecordset。

    rst.MoveLast

    

    ' 调用 EnumFields 来打印记录集的内容。

    '传递记录集对象和要求的字符宽度。

    '

    EnumFields rst, 20

    dbs.Close

End Sub