いろいろなSQLの実行
重複データの取り除き
重複した値が表示されないようにするには、DISTINCT句を使います。
《書式》
SELECT DISTINCT 表示するフィールド名 FROM テーブル名 |
《設定例》
Private Sub 非重複_Click()
'重複された値が表示されないようにするには |
並び替え
任意のキーでレコードを並べ替えるには、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()
'顧客区分でグループ化 Me!表示.RowSource = "SELECT 顧客区分 FROM T得意先マスタ " & _ End Sub |
Private Sub グループと集計_Click()
'集計関数を使うと、グループしてさらに集計ができる。 Me!表示.RowSource = "SELECT 都道府県,COUNT(*) FROM T得意先マスタ " & _ End Sub |
下記例では、都道府県でグループ化し、さらに2件以上存在する都道府県と件数を表示しています。
Private Sub 条件の追加_Click() '適用する条件を追加する場合は HAVINGを使います。(必ずGROUP BYと併用) Me!表示.RowSource = "SELECT 都道府県,COUNT(*) FROM T得意先マスタ " & _ End Sub |
下記例では、2003年以降からの取引先を抽出してから、取引ランクでグループ化してます。
Private Sub 条件指定後にグループ化_Click()
Me!表示.RowSource = "SELECT 取引ランク,COUNT(*) FROM T顧客マスタ " & _ 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 |