Access db loop - для каждой записи в одной таблице создайте массив записей в другой таблице - PullRequest
1 голос
/ 30 апреля 2009

Можно ли создать вложенный циклический запрос в БД доступа , который обновит третью таблицу?

У меня есть основная (заголовочная) таблица:

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

и временная таблица, содержащая подробную информацию, которая понадобится мне для создания третьей (фактической) детали таблицы, которая будет отключать master table

Вот пример таблицы подробностей временного секретаря.

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

По сути, мне нужно пройтись по каждой записи в таблице master .

Внешний контур:

Для каждой записи в таблице мастеров выберите модальность.

Внутренний цикл:

Затем для каждой записи в таблице temp, где совпадают модальности, создайте запись в таблице подробностей (и в процессе выполните некоторые вычисления на основе temps.priceEa и masters.cost).

Это должно создать (master * temps) количество новых записей в таблице сведений для каждой записи в таблице master.

таблица данных должна выглядеть как

----------------------------------------------------------
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 Ответ

1 голос
/ 30 апреля 2009

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

...