Форум: "Базы";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизКопия подчиненных записей Найти похожие ветки
← →
oji (2006-07-07 09:19) [0]Подскажите, как создать новую запись таким образом, чтобы в ней появилась копия из одной подчиненной таблицы предыдущей записи.
Например, есть:
Table Record:
ID=65535
Date=7.7.2006
Text="123"
Subtable Records:
ID=1
SubID=65535
Text="1234"
---
ID=2
SubID=65535
Text="5678"
Нужно чтобы при добавлении в Table записи 65536 с ней добавлялись в SubTable копии записей с SubID=65535, с заменой их на 65536.
Надеюсь, достаточно подробно объяснил.
Инструментарий: BDS2006, MyComponents, ehLib, FR.
← →
SerJaNT © (2006-07-07 09:25) [1]Ничего не понял. 8-)
Объясни поподробнее, что куда добавляется и что где и на что должно изменяться
← →
Johnmen © (2006-07-07 09:54) [2]INSERT INTO ... SELECT FROM ... WHERE SubID=65535
← →
oji (2006-07-07 09:56) [3]Есть главная таблица. Упрощенная структура (достаточно для объяснения):
ID --- Autoincrement PK
Date --- Date
Text --- Varchar(50)
Есть несколько связанных с ней таблиц. Нужна только одна. Пусть ее вид будет следующим:
ID --- Autoincrement PK
SubID --- int(16)
Text --- Varchar(50)
Когда в главную таблицу добавляется запись, то ищется предыдущая (по дате) и по ней нужно выйти на записи в связанной таблице и продублировать их для текущей.
← →
SerJaNT © (2006-07-07 10:52) [4]Если не секрет, скажи, джля чего это? Что ты хочешь сделать, может все граздо проще...
← →
Desdechado © (2006-07-07 10:56) [5]oji (07.07.06 09:56) [3]
Ответ уже дан в [2].
SerJaNT © (07.07.06 10:52) [4]
Например, похожие объекты, отличающиеся парой-тройкой полей из 50-100 штук. Чтоб заново не забивать данные.
← →
SerJaNT © (2006-07-07 11:05) [6]
> Например, похожие объекты, отличающиеся парой-тройкой полей
> из 50-100 штук. Чтоб заново не забивать данные.
Нихрена не пойму, для чего это может понадобиться??
← →
Desdechado © (2006-07-07 11:10) [7]SerJaNT © (07.07.06 11:05) [6]
Не тормози.
Например, есть типовой заказ на покупку чего-то (позиций 200), который присылается в магазин раз в месяц. И каждый месяц в нем есть небольщое отличие: добавили пару пунктов, изменили количество для чего-то, решили сегодня не брать еще что-то.
Итого - совпадение с предыдущим заказом по 180 позициям. Ты их хочешь заставить вдалбливать заново?
Не проще ли скопировать предыдущий заказ и убрать из него ненужное?
← →
SerJaNT © (2006-07-07 11:13) [8]
> Не проще ли скопировать предыдущий заказ и убрать из него
> ненужное?
Это можно сделать и так
SELECT * FROM ... WHERE ... <> ...
← →
Desdechado © (2006-07-07 11:19) [9]SerJaNT © (07.07.06 11:13) [8]
Снова тормозишь.
А если, как я уже говорил, изменяется только количество покупаемого по некоторым позициям?
← →
SerJaNT © (2006-07-07 11:22) [10]Короче, геморойное это дело. Тут надо вложенные условия чтоли использовать...Например, вложенные select"ы и изменять через Update
← →
oji (2006-07-10 02:10) [11]Johnmen, спасибо, оно самое. Как-то даже в голову не пришло. :)
> Desdechado © (07.07.06 10:56) [5]
>
> oji (07.07.06 09:56) [3]
> Ответ уже дан в [2].
Разница "постов" в пару минут. Отправил ответ и ушел на выходные домой. Вернулся, а, оказывается, мне ответили еще раньше второго объяснения. :))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c