Zugang db loop - für jeden Datensatz in einer Tabelle erstellen Array von Datensätzen in einer anderen Tabelle

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

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
War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top