SQLで行を選ぶ(CSVファイルをADOで扱う⑥)


CSVファイルをADOで扱う連載の6回目です。前回の記事はこちらになります。

hirocom777.hatenadiary.org

行(レコード)を選ぶ

 前回は、SQLを指定してCSVファイルを確認てできるツール(CSV_ReaderSQL)を作って動かしてみました。ただ単に読み込むだけではなく、列を選択して読み込んだり列の表示順も変えることができるんです。結構おもしろいじゃないですか。他にも色々試してみましょう!!

f:id:HiroCom777:20210412223610j:plain

で、列を選択できるんだから行はどうなのかって訳で、今回は行の選択に挑戦してみます。ちなみにCSVファイルをデータベースとして見るときに、行方向のデータをレコードって言います(列方向はカラムっていいます)。つまり、CSVファイルから条件を指定して選択されたレコードだけを読んでみようと言う訳です。前回同様ツールは以下からダウンロードしてください。

CSV_ReaderSQL110.zip - Google ドライブ

今回用意したファイル

 さて、今回は以下のデータをご用意しました。前回と同様にコピーしてメモ帳などに貼り付けて名前を指定して保存してください。果物の売上データですね。ファイル名は'売上.csv'としましょう。作ったファイルは任意のフォルダー下に保存してください。

"ID","品名","数量","支店"
"1","バナナ","1","A"
"2","リンゴ","5","C"
"3","ミカン","3","D"
"4","バナナ","2","A"
"5","リンゴ","1","B"
"6","リンゴ","7","D"
"7","ミカン","2","C"
"8","バナナ","5","B"

WHEREでレコードを選択する

前回と同じようにフォルダーを作って、'売上.csv'を配置してください。CSV_ReaderSQLでフォルダーを指定しましょう。 前回ご説明しましたが、CSV_ReaderSQLを開いてファイルの内容をすべて表示するにはSQLコマンド欄に以下を入力して実行ボタンを押します。

  SELECT * FROM [売上.csv]

これですべてのデータが表示されます。条件を指定するにはこの後に'WHERE'と記述して、その後に条件を指定します。以下の様になります。

 SELECT フィールド名 FROM テーブル名 WHERE 条件

それでは、色々な条件で表示してみましょう。

品名を指定して表示する

品名が'バナナ'のデータだけ表示してみましょう。SQLコマンド欄に以下を入力して実行ボタンを押します。

  SELECT * FROM [売上.csv] WHERE 品名 = 'バナナ'
ID 品名 数量 支店
1 バナナ 1 A
4 バナナ 2 A
8 バナナ 5 B

狙い通りの結果が得られました。もっと複雑な条件も指定できます。

複数の条件を指定する

今度は複数の条件を指定してみましょう。A支店でのバナナの売り上げです。SQLコマンド欄に以下を入力して実行ボタンを押します。

  SELECT * FROM [売上.csv] WHERE 品名 = 'バナナ' AND 支店 = 'A'
ID 品名 数量 支店
1 バナナ 1 A
4 バナナ 2 A

2つの条件を'AND'で繋げると、両方の条件が成立したデータだけを表示します。どちらかが成立した場合を表示する場合には'OR'で繋げます。以下を入力して実行ボタンを押してみてください。

  SELECT * FROM [売上.csv] WHERE 品名 = 'バナナ' OR 支店 = 'B'
ID 品名 数量 支店
1 バナナ 1 A
4 バナナ 2 A
5 リンゴ 1 B
8 バナナ 5 B

B支店の売り上げとバナナの売り上げが表示されました。2つの条件のうちどちらかが成立したデータを表示しています。

値の大小で絞る

今までの例では値が合致しているかどうかを判断していました。今度は値の大小を見て絞ってみましょう。 以下を入力して実行してみましょう。

  SELECT * FROM [売上.csv] WHERE 3 <= CINT(数量) 
ID 品名 数量 支店
2 リンゴ 5 C
3 ミカン 3 D
6 リンゴ 7 D
8 バナナ 5 B

数量が3以上の売り上げが表示されました。同様に<,>,>=,=も使用できます。'CINT(数量)'ですが、データを文字列から数値(整数)に変換しています。この例では数量のデータも文字列で表示しているからです。数値として扱う場合は、この様な変換が必要です。同様にCLNG(長整数)、CSNG(単精度浮動小数点)、CDBL(倍精度浮動小数点)などが使用できます。データ型によって使い分けましょう。

次回は計算に挑戦

 今回は、行を選んで読み込んでみました。結構凝った条件を指定できますよね。次回は読み込んだ値を計算してみたいと思います。お楽しみに!! hirocom777.hatenadiary.org CSVファイルをADOで扱う連載記事はコチラからどうぞ