|
14.07.2006, 11:30 | #1 |
MCTS
|
Вопрос по update_recordset
Добрый день!
Подскажите, правильно ли я понимаю, что конструкция команы update_recordset не подразумевает выборки значения, которое нужно присвоить в результате команды? Т.е., ситуация: есть две связанные таблицы, чтобы обновить поле Таблицы1, присвоив значение из Таблицы2, необходимо сделать цикл по записям Таблицы2 и уже в цикле делать update_recordset по условию связующих полей? Заранее спасисбо! |
|
14.07.2006, 11:48 | #2 |
Участник
|
Пример из руковводства разработчика:
Код: UPDATE_RECORDSET myTable SETTING field1 = 1, field2 = fieldX + fieldY WHERE field1 == 0; This example updates multiple fields at once, limit using a where clause, and use other fields in the assignments. Таким образом, фишка данной команды именно в том, что цикл не нужен и производительность (при соблюдениии некоторых условий см. руководство разработчика) увеличивается. Цикл нужен, если вы обрабатываете по одной записи командой update() Последний раз редактировалось Gad; 14.07.2006 в 11:51. |
|
14.07.2006, 12:09 | #3 |
Участник
|
Цитата:
Сообщение от cherv
Добрый день!
Подскажите, правильно ли я понимаю, что конструкция команы update_recordset не подразумевает выборки значения, которое нужно присвоить в результате команды? Т.е., ситуация: есть две связанные таблицы, чтобы обновить поле Таблицы1, присвоив значение из Таблицы2, необходимо сделать цикл по записям Таблицы2 и уже в цикле делать update_recordset по условию связующих полей? Заранее спасисбо! Код: static void Job4(Args _args) { PurchLine purchLine; ; update_recordSet purchLine SETTING itemid = (select itemId from InventTable where InventTable.ItemId == purchLine.ItemId).itemId WHERE purchLine.purchId like '*0036'; } |
|
14.07.2006, 12:43 | #4 |
Developer
|
Цитата:
Сообщение от kashperuk
Можно вот так:
Код: static void Job4(Args _args) { PurchLine purchLine; ; update_recordSet purchLine SETTING itemid = (select itemId from InventTable where InventTable.ItemId == purchLine.ItemId).itemId WHERE purchLine.purchId like '*0036'; } Код: static void Job4(Args _args) { PurchLine purchLine; ; update_recordSet purchLine SETTING itemid = "" WHERE purchLine.purchId like '*0036'; } А по поводу вопроса автора, то я считаю, что т.к. join и outer join в команде update_recordset не применимы (по крайней мере в 3-ей версии), то обновить поле первой таблицы значением из второй можно либо через while select либо через connection. В последнем случае нужно знать чем такой подход отличается от while select |
|
|
За это сообщение автора поблагодарили: kashperuk (1). |
14.07.2006, 12:49 | #5 |
Участник
|
Oops!
Действительно, не доглядел |
|
14.07.2006, 14:28 | #6 |
MCTS
|
Цитата:
Сообщение от vallys
А по поводу вопроса автора, то я считаю, что т.к. join и outer join в команде update_recordset не применимы (по крайней мере в 3-ей версии), то обновить поле первой таблицы значением из второй можно либо через while select либо через connection. В последнем случае нужно знать чем такой подход отличается от while select
|
|