ALL、DISTINCT、DISTINCTROW、TOP 述語の使用例

次の例では、Customers テーブルと Orders テーブルを CustomerID フィールドで結合するクエリを作成します。Customers テーブルには重複する CustomerID フィールドはありませんが、得意先からはそれぞれ多数の注文を受けているため、Orders テーブルには重複する CustomerID フィールドがあります。DISTINCTROW 述語を使用すると、少なくとも 1 つ以上の注文を出している会社名の一覧を作成できます。ただし、Orders に関する明細は含まれません。

Sub AllDistinctX()

    

    Dim dbs As Database, rst As Recordset

    

    ' この下の行を、使用しているコンピュータ上の

    ' Northwind のパスに変更してください。

    Set dbs = OpenDatabase("Northwind.mdb")

    

    ' Customers テーブルと Orders テーブルを

    ' CustomerID フィールドで結合しています。

    ' 少なくとも 1 つ以上の注文を出している

    ' 会社名の一覧を選択します。

    Set rst = dbs.OpenRecordset("SELECT DISTINCTROW " _

        & "CompanyName FROM Customers " _

        & "INNER JOIN Orders " _

        & "ON Customers.CustomerID = " _

        & "Orders.CustomerID " _

        & "ORDER BY CompanyName;")

    

    ' Recordset を作成します。

    rst.MoveLast

    

    ' EnumFields を呼び出し、Recordset の内容を出力します。

    ' Recordset オブジェクトと必要な

    ' フィールド幅を渡します。

    EnumFields rst, 25

    

    dbs.Close

    

End Sub