Microsoft Access Club >SQL入門講座 >このページ >次頁 < 前項  サイト内検索
 

選択クエリの作成と実行 : SQL入門講座



SQLはクエリの元になっいるものです。これは、今まで再三申し上げましたね。クエリで基本となるものは選択クエリ、SQLでも同じことが言えます。

  • 選択クエリとは、テーブルレコードを抽出したり、検索を行ったりするクエリの元になるものです。すてべのSQLもここから出発します。 なお、SQLを構成する句は、全て大文字で記述するのが慣わしです。

ここでは、選択クエリを取り上げ、以降各種のクエリを見ていきます。なお、サンプルテーブル(出張管理)は以下のものを予定しています。

ID社員名出発日帰社日目的地旅費額
2 橘 修平 2004/07/04 2004/07/05 京都支店 \28,400
4 柴田 喜一 2004/07/17 2004/07/21 東京支店 \78,310
1 正道 良一 2004/07/02 2004/07/05 広島支店 \56,720
3 田中 邦子 2004/07/10 2004/07/15 福井支店、石川支店 \98,200

基本構文

選択クエリを用いるには、以下のように記述します。選択クエリの基本形は、SQLの基本形です。

SELECT フィールド名 FROM テーブル名
  • フィールド名 : テーブルフィールド名を記述します。
    • 単一のレコードで構成しているなら、テーブル名は省略できます。
    • 複数のフィールドを対象とする場合は、カンマ(,)で区切ります。
    • フィールド全てを対象とする場合は、*(アスタリスク)に置き換えることができます。

サンプル構文

テーブルと全く同じクエリを作成します。

  • SELECT ID,社員名,出発日,帰社日,目的地,旅費額 FROM 出張管理;

全てのフィールドを対象にするなら、各フィールド名を省略しアスタリスク(*)を使用することができます。以下のSQLは、上記のSQLと同じです。

  • SELECT * FROM 出張管理;

複数のテーブルを対象にする場合は、下記のようにSELECT句でテーブル名とフィールド名をドット(.)で結び、FROM句で各テーブルをカンマ(,)で記述する必要があります。

  • SELECT 出張管理.社員名,社員マスター.社員ID FROM 出張管理,社員マスター;
DAOを用いた事例

DAOを用いてQ_sampleクエリを作成し開きます。

Sub MySQLSelect()

On Error GoTo エラー

    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim mySQL As String
    
    Set db = CurrentDb()

    ' SQLを記述します。
    mySQL = "SELECT * FROM 出張管理;" 
        
    Set qdf = db.CreateQueryDef("Q_sample", mySQL) ' Q_sampleを作成します。
    
    DoCmd.OpenQuery qdf.Name ' クエリを開きます。
                
    db.Close: Set db = Nothing

    Exit Sub
エラー:
    
    If Err.Number = 3012 Then
        db.QueryDefs.Delete "Q_sample" ' Q_sampleを削除します。
        Resume
    Else
        MsgBox Err.Number & " : " & Err.Description
    End If
    
End Sub
留意点
  1. VBA内でSQLを用いる場合は、前後をダブルクォーション(")で囲みます。
  2. 同名のクエリが既に存在しているとエラーになるので、エラーコード3012が返されたら該当のクエリを削除します。
  3. 一般的に、選択クエリはWHERE句などと併用して利用させる場合がほとんどです。

2004/08/13

ページの先頭へ 前ページへ戻る

 


選択クエリの作成と実行 : SQL入門講座


-Microsoft Access Club-

動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。データセンター設置場所はアメリカ合衆国です。: 動画サーバードットコム
動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。
データセンター設置場所はアメリカ合衆国です。
100Mbps〜1Gbpsまで対応できます。