laço db de acesso - para cada registro em uma tabela criar matriz de registros em outra tabela

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

Pergunta

É possível criar um nested looping consulta no Acesso DB que irá atualizar uma terceira tabela?

Eu tenho uma tabela master (cabeçalho):

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

e uma tabela temporária que contém informação do detalhe que eu vou ter de criar um terceiro (real) detalhes mesa que irá chave fora dos mestres tabela

aqui está uma amostra da tabela de detalhes de temp.

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

Basicamente, eu preciso fazer um loop por todos os registros nos mestres tabela.

loop externo:

Para cada registro na tabela de mestres, pegue a modalidade.

loop interno:

Então, para cada registro na tabela temps, onde as modalidades corresponder, criar um registro na tabela de detalhes (e, no processo, fazer alguns cálculos baseados em temps.priceEa e masters.cost).

Isso deve criar (Masters * temps) número de novos registros na tabela de detalhes para cada registro na tabela de mestres.

tabela de detalhes, deve acabar parecendo

----------------------------------------------------------
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
Foi útil?

Solução


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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top