HOME > 即効テクニック > AccessVBA > クエリ・SQL > 他のSELECTステートメントの結果を条件に指定する(副問合せ)

即効テクニック

クエリ・SQL

他のSELECTステートメントの結果を条件に指定する(副問合せ)

(Access 2000/2002)
●概要●
WHERE句に他のSELECTステートメントを埋め込んで、その結果を検索条件に使用します。
サンプルでは、副問合せのSELECTステートメントで[給与テーブル]からMAX関数を使用して一番高い「給与」を検索し、その「給与」を条件として、「給与」が一致する「社員コード」、「名前」、「給与」をメッセージダイアログに表示します。
●サンプル●
'他のSELECTステートメントの結果を条件に指定する(副問合せ)
Public Sub Sample()

    Dim myDB As Database
    Dim myRS As DAO.Recordset
    Dim mySQL As String

    'SQLステートメントを定義する
    mySQL = "SELECT A.社員コード,名前,給与 " & _
            "FROM 社員テーブル A,給与テーブル B " & _
            "WHERE A.社員コード=B.社員コード AND " & _
            "給与 IN (SELECT MAX(給与) FROM 給与テーブル);"

    'カレントデータベースを変数に代入する
    Set myDB = CurrentDb
    'SQLステートメントを実行してレコードセットを開く
    Set myRS = myDB.OpenRecordset(mySQL, dbOpenDynaset)
    'レコードセットの内容を表示する
    MsgBox "*** 一番給与の高い社員 ***" & vbCrLf & _
            myRS(0) & " " & myRS(1) & "  給与:" & myRS(2)
    'レコードセットを閉じる
    myRS.Close

End Sub