Цикл доступа к базе данных - для каждой записи в одной таблице создайте массив записей в другой таблице.
-
03-07-2019 - |
Вопрос
Можно ли создать вложенный циклический запрос в Доступ к базе данных это обновит третью таблицу?
У меня есть основная таблица (заголовок):
------------------------
masters
------------------------
num | modality | cost |
------------------------
01 | thing | 23.00 |
02 | thing | 42.00 |
03 | thing | 56.00 |
04 | apple | 11.00 |
05 | apple | 17.00 |
и временная таблица, содержащая подробную информацию, которая мне понадобится для создания третьей (фактической) подробности стол, который отключит мастера стол
вот образец таблицы сведений о температуре.
----------------------------------
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 выберите модальность.
Внутренний цикл:
Затем для каждой записи в таблице temps, где модальности совпадают, создайте запись в таблице сведений (и в процессе выполните некоторые вычисления на основе temps.priceEa и masters.cost).
Это должно создать (masters * 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
Решение
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