質問するログイン新規登録

回答編集履歴

6

追記

2021/04/22 02:49

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -40,4 +40,4 @@
40
40
  )
41
41
  where score is not null
42
42
  ```
43
- この際、ODBCリンクテーブルかどうかは関係がありません。
43
+ そもそも更新するテーブルはACCESSのテーブルだったという事なので、この際、ODBCリンクテーブルかどうかは関係がありません。

5

推敲

2021/04/22 02:49

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -17,7 +17,7 @@
17
17
 
18
18
  それが本題なのですね。
19
19
  「出来ないのでしょうか?」という質問なので、やってみたけど出来なかったと思いました。
20
- SQLを組み立てる為の項目名の情報もありませんでしたし。
20
+
21
21
  > テーブルA(evaluation)のカラム名は
22
22
  > e_id(PK),e_score(点数),e_evaluation(評価)
23
23
  >

4

推敲

2021/04/22 02:13

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -28,7 +28,7 @@
28
28
  以下のSQLで点数範囲を求めます。
29
29
  ```SQL
30
30
  select *, e_score as lower_score
31
- , Nz((select e_score from evaluation lag where lag.e_id = evaluation.id -1), 100) as upper_score
31
+ , Nz((select e_score from evaluation as lag where lag.e_id = evaluation.id -1), 100) as upper_score
32
32
  from evaluation
33
33
  ```
34
34
  上記を`Q_evaluation`というクエリーにしたとして、更新するクエリーは以下です。

3

追記

2021/04/22 01:49

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -9,4 +9,35 @@
9
9
  > データ アクセス オブジェクト (DAO) モデルを使用すると、外部データにアクセスSQLクエリを使用してパフォーマンスを向上させることができます。
10
10
 
11
11
  [パススルー クエリを作成する](https://support.microsoft.com/ja-jp/office/%E3%83%91%E3%82%B9%E3%82%B9%E3%83%AB%E3%83%BC-%E3%82%AF%E3%82%A8%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-b775ac23-8a6b-49b2-82e2-6dac62532a42)
12
- [【MS Access】動的にパススルークエリを作成する](https://www.depthbomb.net/?p=258)
12
+ [【MS Access】動的にパススルークエリを作成する](https://www.depthbomb.net/?p=258)
13
+
14
+ 追記
15
+ --
16
+ > sql文はどのように作成してよいかわからず、書けてません。
17
+
18
+ それが本題なのですね。
19
+ 「出来ないのでしょうか?」という質問なので、やってみたけど出来なかったと思いました。
20
+ SQLを組み立てる為の項目名の情報もありませんでしたし。
21
+ > テーブルA(evaluation)のカラム名は
22
+ > e_id(PK),e_score(点数),e_evaluation(評価)
23
+ >
24
+ > テーブルB(result)は
25
+ > m_id(メンバーID),m_name(メンバー名),s_id(教科ID),s_name(教科名),score(取得点数)evaluation(決定評価)
26
+
27
+ 要点は、evaluationの点数範囲をどのように表現するかです。
28
+ 以下のSQLで点数範囲を求めます。
29
+ ```SQL
30
+ select *, e_score as lower_score
31
+ , Nz((select e_score from evaluation lag where lag.e_id = evaluation.id -1), 100) as upper_score
32
+ from evaluation
33
+ ```
34
+ 上記を`Q_evaluation`というクエリーにしたとして、更新するクエリーは以下です。
35
+ ```SQL
36
+ update result set
37
+ evaluation=(
38
+ select e_evaluation from Q_evaluation
39
+ where result.score between lower_score and upper_score
40
+ )
41
+ where score is not null
42
+ ```
43
+ この際、ODBCリンクテーブルかどうかは関係がありません。

2

追記

2021/04/22 01:47

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -6,4 +6,7 @@
6
6
 
7
7
  ですので、SQL SERVER内で完結するようにパススルークエリーを実行した方が良いかと。
8
8
  [ADOX を使用して Access で SQLパススルー クエリを作成する方法](https://docs.microsoft.com/ja-jp/office/troubleshoot/access/adox-create-sql-pass-through-query)
9
- > データ アクセス オブジェクト (DAO) モデルを使用すると、外部データにアクセスSQLクエリを使用してパフォーマンスを向上させることができます。
9
+ > データ アクセス オブジェクト (DAO) モデルを使用すると、外部データにアクセスSQLクエリを使用してパフォーマンスを向上させることができます。
10
+
11
+ [パススルー クエリを作成する](https://support.microsoft.com/ja-jp/office/%E3%83%91%E3%82%B9%E3%82%B9%E3%83%AB%E3%83%BC-%E3%82%AF%E3%82%A8%E3%83%AA%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-b775ac23-8a6b-49b2-82e2-6dac62532a42)
12
+ [【MS Access】動的にパススルークエリを作成する](https://www.depthbomb.net/?p=258)

1

追記

2021/04/21 02:46

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -4,4 +4,6 @@
4
4
 
5
5
  ただ、リンクテーブルを含む結合の場合、行単位で都度トラフィックが発生し低速になります。
6
6
 
7
- ですので、SQL SERVER内で完結するようにパススルークエリーを実行した方が良いかと。
7
+ ですので、SQL SERVER内で完結するようにパススルークエリーを実行した方が良いかと。
8
+ [ADOX を使用して Access で SQLパススルー クエリを作成する方法](https://docs.microsoft.com/ja-jp/office/troubleshoot/access/adox-create-sql-pass-through-query)
9
+ > データ アクセス オブジェクト (DAO) モデルを使用すると、外部データにアクセスSQLクエリを使用してパフォーマンスを向上させることができます。