Access db loop: para cada registro en una tabla, cree una matriz de registros en otra tabla
-
03-07-2019 - |
Pregunta
¿Es posible crear una consulta de bucle anidado en Access DB que actualizará una tercera tabla?
Tengo una tabla maestra (encabezado):
------------------------
masters
------------------------
num | modality | cost |
------------------------
01 | thing | 23.00 |
02 | thing | 42.00 |
03 | thing | 56.00 |
04 | apple | 11.00 |
05 | apple | 17.00 |
y una tabla temporal que contiene información detallada que necesitaré para crear una tercera tabla (real) detalles que se borrará de la tabla maestros
Aquí hay una muestra de la tabla de detalles temporales.
----------------------------------
temps
----------------------------------
modelnumber | modality | priceEa |
----------------------------------
| 123 | thing | 1.00 |
| 234 | apple | 2.00 |
| 345 | apple | 3.00 |
| 456 | apple | 4.00 |
| 567 | thing | 5.00 |
Básicamente, necesito recorrer cada registro en la tabla maestros .
Bucle externo:
Para cada registro en la tabla de maestros, seleccione la modalidad.
Bucle interno:
Luego, para cada registro en la tabla de temperaturas, donde coinciden las modalidades, cree un registro en la tabla de detalles (y, en el proceso, realice algunos cálculos basados ??en temps.priceEa y masters.cost).
Esto debería crear (masters * temps) el número de nuevos registros en la tabla de detalles para cada registro en la tabla de maestros.
la tabla de detalles, debería terminar pareciéndose a
----------------------------------------------------------
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
Solución
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