Access db loop - pour chaque enregistrement d'une table, créez un tableau d'enregistrements dans une autre table

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

Question

Est-il possible de créer une requête en boucle imbriquée dans la base de données Access qui mettra à jour une troisième table?

J'ai une table maître (en-tête):

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

et une table temporaire contenant les informations de détail dont j'ai besoin pour créer une troisième (réelle) détails qui supprimera la table des maîtres

.

voici un exemple de la table de détails temporaires.

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

En gros, je dois parcourir tous les enregistrements du tableau maîtres .

Boucle extérieure:

Pour chaque enregistrement de la table des maîtres, saisissez la modalité.

Boucle intérieure:

Ensuite, pour chaque enregistrement de la table temporaire, où les modalités correspondent, créez un enregistrement dans la table de détails (et effectuez des calculs en fonction de temps.priceEa et de masters.cost).

Ceci devrait créer (maîtres * temps) le nombre de nouveaux enregistrements dans la table des détails pour chaque enregistrement de la table des maîtres.

la table des détails, devrait ressembler à

----------------------------------------------------------
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
Était-ce utile?

La solution


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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top