前提・実現したいこと
現在、SQLの勉強のために為替レートを計算して表示するプログラムを作っています。
これから何個か計算を入れたいなと思うのですが、プログラムが行われる順番が普通のプログラミング言語と違い、単に上から行われているだけでは無いように感じます。
そこについてもっと深く理解したいです。
疑問点
次のようなSQL文があったとき、
一番初めにFROMを見にいっているのがわかります。
理由はテーブル名をT1~T3と付けているのですが、INSERTやSELECTで参照できている。
次にSELECTを行った上で、INSERTをかけているんだろうなと推測しております。
ここからが詳しく知りたい疑問点なのですが
・SELECTの中で取得した値を、同じSELECTの中の計算に使用することはできるのでしょうか?
→できるとするならば、SELECTの中で上から実行されるので上の方に書いておかなければいけないのか?
SQLは基本的に今回の場合のようにINSERTで追加する順番通りにSELECTする値も書いている事が多いような気がしたので質問させていただきました。
詳しい方いらっしゃいましたら、ご教示ください。
よろしくお願いいたします。
該当のソースコード(サンプル)
SQL
1 2 strSQL = "INSERT INTO 本日の予想と結果(" & _ 3 "日付け,安値予想,高値予想,安値結果,高値結果,差,勢い) " & _ 4 "SELECT T1.日付け," & _ 5 "Cint(Nz(T2.安値,T3.安値)*10*0.99) / 10 AS 安値予想, " & _ 6 "Cint(Nz(T2.高値,T3.高値)*10*0.99) / 10 AS 高値予想, " & _ 7 "T1.安値 AS 安値結果, " & _ 8 "T1.高値 AS 高値結果, " & _ 9 "(T1.高値 - T1.安値) AS 差, " & _ 10 "SWITCH(" & _ 11 " 差 >= 3 , '高' " & _ 12 ",差 >= 2 , '中' " & _ 13 ",差 >= 1 , '並' " & _ 14 ",差 < 1 ,'低' " & _ 15 ") AS 勢い " & _ 16 "FROM (ドル円 AS T1 LEFT JOIN ドル円 AS T2 " & _ 17 "ON T1.日付け = (T2.日付け + 1)) " & _ 18 "LEFT JOIN ドル円 AS T3 " & _ 19 "ON T1.日付け = (T3.日付け + 3)" 20
補足・現在使っているDB
現在使用しているのはAccessDB(2013)ですが、
もしもSQL文の実行順序に違いがあるようでしたら、そこについても知りたいです。
SQLのみ表示
SQL
1INSERT INTO 本日の予想と結果(日付け,安値予想,高値予想,安値結果,高値結果,差,勢い) 2SELECT T1.日付け,Cint(Nz(T2.安値,T3.安値)*10*0.99) / 10 AS 安値予想, 3 Cint(Nz(T2.高値,T3.高値)*10*0.99) / 10 AS 高値予想, T1.安値 AS 安値結果, 4 T1.高値 AS 高値結果, (T1.高値 - T1.安値) AS 差, 5SWITCH( 差 >= 3 , '高' ,差 >= 2 , '中' ,差 >= 1 , '並' ,差 < 1 ,'低' ) AS 勢い 6FROM (ドル円 AS T1 LEFT JOIN ドル円 AS T2 ON T1.日付け = (T2.日付け + 1)) 7 LEFT JOIN ドル円 AS T3 ON T1.日付け = (T3.日付け + 3)
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー