Access db loop: para cada registro en una tabla, cree una matriz de registros en otra tabla

StackOverflow https://stackoverflow.com/questions/808331

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
¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top