![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
azcrc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.3.2010 Репутация: 1 Всего: 1 |
Здравствуйте.
Подскажиет пожалуйста пути решения вопроса. Нужно увеличить KOLVO таблицы STORAGE_RESTS на величину KOLVO таблицы LINE_DOC для определенных LINE_ID. По умолчанию STORAGE_RESTS может быть заполнена полностью, частично, или пустая. Суть: товар приходит на склад по документу. Я срез схемы нарисовал, чтобы легче было для восприятия. PRODUCT_ID - первичный ключ, автоинкр. (тригер, ген) Схема тут: http://xmages.net/upload/eeadd0cd.png Какими этапами это правильно делается? --- Первый шаг, это понимаю, select * from LINE_DOC where LINE_ID > tratata. Это выберет исходную таблицу. А как правильно сделать апдейт (и местами инсерт) в STORAGE_RESTS? Это сообщение отредактировал(а) azcrc - 21.5.2010, 15:04 |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Давненько я уже запросы не писал ![]() Писал "из головы" скорее всего будут ошибки... Оно? -------------------- Слава Україні! |
|||
|
||||
azcrc |
|
||||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.3.2010 Репутация: 1 Всего: 1 |
Нет, не оно.
И дело даже не в сумме. Нужно просто плюсануть количество STORAGE_RESTS количеством LINE_DOC для каждой записи по PRODUCT_ID. Как-то так ( набросок ![]()
При условии, что в storage_rests может быть изначально пусто. Т.е. надо где апдейт, а где и инсерт. Процедурой... Суть: В line_doc есть записи, вот уже пуcть они будут выделены:
их количества (LINE_DOC.kolvo) надо оттащить в storage_rests (апдейт/инсерт). Это сообщение отредактировал(а) azcrc - 21.5.2010, 15:36 |
||||
|
|||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
А обязательно одним запросом?
Если нет, то сначала можно определить те записи, которых нет в storage_rests и есть в doc_line, добавить их в storage_rests с количеством "0", затем применить update... -------------------- Слава Україні! |
|||
|
||||
azcrc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.3.2010 Репутация: 1 Всего: 1 |
Обязательно в рамках одной быстрой процедуры.
Была мысль, сделать сначала вставку с нулями, а потом апдейт. Но во-первых, я не знаю как и сейчас ищу информацию/примеры (где-то видел на днях), и если найду, то это может быть не быстрый способ. А может и приемлимый. И извиняюсь, line_id - это просто поле, не уникальное и не счетчик. Это сообщение отредактировал(а) azcrc - 21.5.2010, 15:09 |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Что конкретно не понятно? Как показывает практика, дело пойдет гораздо быстрее, если будут предоставлен тестовый набор данных с пояснением, что необходимо получить (можно выложить БД или ее кусочек если она большая ![]() -------------------- Слава Україні! |
|||
|
||||
azcrc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.3.2010 Репутация: 1 Всего: 1 |
Спасибо за предложение, но база несколько сложнее, чем срез, который я привел... есть ли смысл?
Нарисовал картинку вот, если чем поможет: http://xmages.net/upload/96a73b38.png UPD Весь день проковырялся, и не подумал бы куда копать, а вот, оказывается, как правильно: http://www.firebirdsql.org/rlsnotesh/rlsno...l#rnfb210-merge Это сообщение отредактировал(а) azcrc - 21.5.2010, 17:19 |
|||
|
||||
Gluttton |
|
||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Почитаем... А у меня вот что получилось:
Это сообщение отредактировал(а) Gluttton - 22.5.2010, 09:39 -------------------- Слава Україні! |
||||||
|
|||||||
azcrc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 25.3.2010 Репутация: 1 Всего: 1 |
Спасибо, пример тоже довольно интересный
![]() |
|||
|
||||
Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 24 Всего: 54 |
Незачто ![]() Важно не то, что он интересный, а то, что он воспроизводимый, и если теперь, кто-нибудь решит подключиться к решению проблемы, то ему не прийдется оперировать данными "в голове" или же создавать свою БД и набивать туда данные с картинки, а достаточно будет воспользоваться готовым скриптом ![]() -------------------- Слава Україні! |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |