いろいろなSQLの実行

重複データの取り除き 

重複した値が表示されないようにするには、DISTINCT句を使います。

《書式》

SELECT DISTINCT 表示するフィールド名 FROM テーブル名

《設定例》

Private Sub 非重複_Click()

'重複された値が表示されないようにするには
'SELECT の後ろに DISTINCT句を使います。

Me!表示.RowSource = "SELECT DISTINCT * FROM Q都道府県 "

End Sub

 

並び替え 

任意のキーでレコードを並べ替えるには、ORDER BY句 を使います。

《書式》

ORDER BY フィールド名 並べ替え方法

《設定例》

Private Sub 名前順_Click()

Me!表示.RowSource = "SELECT * FROM Q得意先マスタ " & _
              "ORDER BY フリガナ"

End Sub

 

グルーピング 

指定したフィールドを単位としてグループ化するには、GROUP BY句 を使います。

《書式》

SELECT 表示するフィールド名
FROM テーブル名
GROUP BY グルーピング対象フィールド名

《設定例》

Private Sub 区分でグルーピング_Click()

'顧客区分でグループ化
'GROUP BY を使う場合、SELECTとGROUPの両方でフィールドを選択する

Me!表示.RowSource = "SELECT 顧客区分 FROM T得意先マスタ " & _
"GROUP BY 顧客区分"

End Sub

 

Private Sub グループと集計_Click()

'集計関数を使うと、グループしてさらに集計ができる。
'この場合は件数を求めている

Me!表示.RowSource = "SELECT 都道府県,COUNT(*) FROM T得意先マスタ " & _
              "GROUP BY 都道府県"

End Sub

下記例では、都道府県でグループ化し、さらに2件以上存在する都道府県と件数を表示しています。

Private Sub 条件の追加_Click()

'適用する条件を追加する場合は HAVINGを使います。(必ずGROUP BYと併用)
'元のテーブルに条件を入れられる、または条件を先に指定する場合は、WHERE句を使います。
'HAVINGは、グルーピング後でないと適用できない条件のときに使います。

Me!表示.RowSource = "SELECT 都道府県,COUNT(*) FROM T得意先マスタ " & _
              "GROUP BY 都道府県 " & _
              "HAVING COUNT(*) >=2 "

End Sub

下記例では、2003年以降からの取引先を抽出してから、取引ランクでグループ化してます。

Private Sub 条件指定後にグループ化_Click()

Me!表示.RowSource = "SELECT 取引ランク,COUNT(*) FROM T顧客マスタ " & _
              "WHERE 取引開始日 >= #2003/01/01#" & _
              "GROUP BY 取引ランク"

End Sub

 

関連付け(等結合) 

複数のテーブルをFROMで指定すると、それらのテーブルを組み合わせた結果(直接結合)が得られます。
WHERE条件を使うと、関連付けを行うことができます。
下記例では、「T名簿マスタ」テーブルと「T名簿区分」テーブルを「区分」フィールドをキーとして つなげています。
等結合は、関連付けができないレコードは含みません。

Private Sub リレーション_Click()

'テーブルを結合するSQLステートメント

Dim mySQL As String
mySQL = "SELECT T名簿マスタ.区分,T名簿区分.区分名,T名簿マスタ.氏名 " & _
      "FROM T名簿マスタ,T名簿区分 " & _
      "WHERE T名簿マスタ.区分 = T名簿区分.区分"
Me!表示.RowSource = mySQL

End Sub