●概要●
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