2009-04-30 6 views
1

Ist es möglich, eine verschachtelte Schleife Abfrage in Access DB erstellen, die eine dritte Tabelle aktualisieren?Access DB-Schleife - für jeden Datensatz in einer Tabelle erstellen Array von Datensätzen in einer anderen Tabelle

Ich habe eine 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 mit Detail Informationen, die ich brauche, würde ein Drittel (tatsächlichen) Details Tabelle zu erstellen, die aus der die Taste Master Tabelle

Hier ist ein Beispiel für die Temp-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 | 

Grundsätzlich, ich brauche in dem Meister Tabelle durch jeden Datensatz in einer Schleife.

äußeren Schleife:

für jeden Datensatz in der Tabelle Masters, greifen die Modalität.

innere Schleife:

für jeden Datensatz dann in der temps Tabelle, in der die Modalitäten entsprechen, erstellen Sie einen Datensatz in der Detailtabelle (und in dem Prozess, hat einige Berechnungen auf Basis von temps.priceEa und Meister .Kosten).

Dies sollte (master * temps) Anzahl der neuen Datensätze in der Detailtabelle für jeden Datensatz in der Mastertabelle erstellen.

die Details Tabelle, am Ende sollte wie

---------------------------------------------------------- 
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 

Antwort

1
 

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 
 
+0

suchen Ich glaube, Sie es didz! Es ist nicht lustig, wie manchmal sql Schleifen Updates/Inserts durchführt, ohne wirklich zu schauen, wie es es tun wird ... es bringt mein Gehirn dazu, das Problem falsch zu denken. Vielen Dank. – m42

+0

Erm, SQL führt das Schleifen nicht konzeptionell durch. Vielleicht würde es hilfreich sein, wenn Sie in Bezug auf eine SQL-Aktualisierung/das Einfügen aller Zeilen betroffenen Zeilen auf einmal denken. – onedaywhen