2009-04-30 3 views
1

Возможно ли создать запрос вложенного цикла в Access DB, который обновит третью таблицу?Доступ к циклу db - для каждой записи в одной таблице создать массив записей в другой таблице

У меня есть мастер (заголовок) таблицы:

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

и временная таблица, содержащие данные детали, что мне нужно, чтобы создать третью (фактическую) деталь таблицы, которая будет ключ прочь мастера стол

вот образец таблицы деталей 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 | 

В принципе, мне нужно перебрать каждую запись в мастеров таблицы.

Внешний контур:

Для каждой записи в таблице мастеров, возьмите модальности.

Внутренний контур:

Тогда для каждой записи в таблице Temps, где соответствовали условиям, создать запись в таблице данные (и в этом процессе, сделать некоторые расчеты, основанные на temps.priceEa и мастеров .Стоимость).

Это должно создать (количество мастеров * temps) новых записей в таблице сведений для каждой записи в таблице мастеров.

деталей таблицы, должны в конечном итоге выглядит как

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

ответ

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

Я думаю, что вы didz его! Не смешно, как иногда sql выполняет циклические обновления/вставки, не выглядя на самом деле так, как будто это будет делать ... это заставляет мой мозг думать о проблеме по-другому. Спасибо. – m42

+0

Erm, SQL не выполняет циклов концептуально. Возможно, это поможет, если вы подумаете с точки зрения обновления SQL/вставки всех строк, затронутых строк, сразу. – onedaywhen

 Смежные вопросы

  • Нет связанных вопросов^_^