Zugang db loop - für jeden Datensatz in einer Tabelle erstellen Array von Datensätzen in einer anderen Tabelle
-
03-07-2019 - |
Frage
Ist es möglich, eine verschachtelte Schleife Abfrage in Zugriff DB zu erstellen, die eine dritte Tabelle aktualisieren?
Ich habe einen Master (Header) Tabelle:
------------------------
masters
------------------------
num | modality | cost |
------------------------
01 | thing | 23.00 |
02 | thing | 42.00 |
03 | thing | 56.00 |
04 | apple | 11.00 |
05 | apple | 17.00 |
und eine temporäre Tabelle Detailansicht enthält, dass ich ein dritten erstellen müssen werden (tatsächlich) Details Tabelle, die aus dem Master Taste Tabelle
Hier ist ein Beispiel der Temperatur Details Tabelle.
----------------------------------
temps
----------------------------------
modelnumber | modality | priceEa |
----------------------------------
| 123 | thing | 1.00 |
| 234 | apple | 2.00 |
| 345 | apple | 3.00 |
| 456 | apple | 4.00 |
| 567 | thing | 5.00 |
Im Grunde muss ich Schleife durch jeden Datensatz in den Herren Tabelle.
Äußere Schleife:
Für jeden Datensatz in der Master-Tabelle, greift die Modalität.
Inner-Schleife:
Dann ist für jeden Datensatz in der temps Tabelle, in der die Modalitäten entsprechen, einen Datensatz in der Detailtabelle erstellen (und in dem Prozess, hat einige Berechnungen auf Basis von temps.priceEa und masters.cost).
Dies sollte (Master * temps) Anzahl neuer Datensätze in der Detailtabelle erstellen für jeden Datensatz in der Master-Tabelle.
die Details Tabelle, sollte aussehen wie
Ende----------------------------------------------------------
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
Lösung
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