2009-04-30 4 views
1

入れ子ループのクエリをに作成できますか?アクセスDBは3番目のテーブルを更新しますか?アクセスDBループ - あるテーブルのレコードごとに別のテーブルのレコードの配列を作成

私はマスター(ヘッダ)表があります。

------------------------ 
masters 
------------------------ 
num | modality | cost | 
------------------------ 
01 | thing | 23.00 | 
02 | thing | 42.00 | 
03 | thing | 56.00 | 
04 | apple | 11.00 | 
05 | apple | 17.00 | 

と私はのOFFキーになる第三(実際の)詳細テーブルを作成する必要があります一時テーブル含む詳細情報をマスターテーブル

ここに、一時テーブルのサンプルがあります。

---------------------------------- 
temps 
---------------------------------- 
modelnumber | modality | priceEa | 
---------------------------------- 
| 123  | thing | 1.00 | 
| 234  | apple | 2.00 | 
| 345  | apple | 3.00 | 
| 456  | apple | 4.00 | 
| 567  | thing | 5.00 | 

基本的に、私はマスターテーブル内のすべてのレコードをループする必要があります。

外部ループ:マスターテーブル内のレコードごと

、モダリティをつかみます。

内部ループ:

はその後モダリティが一致タンテーブル内のレコードごとに、詳細テーブルのレコードを作成し(その過程で、temps.priceEaとマスターに基づいて、いくつかの計算を行います。コスト)。

これにより、mastersテーブルのすべてのレコードの詳細テーブルに(masters * temps)個の新しいレコードが作成されます。

詳細テーブル、私はあなたがそれをdidz考える

---------------------------------------------------------- 
details 
---------------------------------------------------------- 
num | modelnumber | modality | priceEa | adjustedCost | 
---------------------------------------------------------- 
| 01 | 123   | thing  | 1.00 | (do calc here) 
| 01 | 567   | thing  | 5.00 | (do calc here) 
| 02 | 123   | thing  | 1.00 | (do calc here) 
| 02 | 567   | thing  | 5.00 | (do calc here) 
| 03 | 123   | thing  | 1.00 | (do calc here) 
| 03 | 567   | thing  | 5.00 | (do calc here) 
| 04 | 234   | apple  | 2.00 | (do calc here) 
| 04 | 345   | apple  | 3.00 | (do calc here) 
| 04 | 456   | apple  | 4.00 | (do calc here) 
| 05 | 234   | apple  | 2.00 | (do calc here) 
| 05 | 345   | apple  | 3.00 | (do calc here) 
| 05 | 456   | apple  | 4.00 | (do calc here) 
...etc 

答えて

1
 

SELECT m.num, t.modelnumber, m.modality, t.priceea 
into myNewTempTable 
from masters m inner join temp t on m.modality = t.modality 
order by m.num, t.modelnumber 
 
+0

のように見える終わる必要があります!時にはSQLがループ更新/挿入を実行することが時にはどうなるのか面白いことではありません。私の脳は間違った方法で問題を考えるようになります。ありがとうございました。 – m42

+0

Erm、SQLは概念的にループを実行しません。おそらく、影響を受けるすべての行をすべて一度に更新/挿入するという観点から考えると助けになるでしょう。 – onedaywhen

関連する問題