Форум: "Базы";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];
ВнизЗапись данных в подченненую табл SQL-запросом Найти похожие ветки
← →
vturkevich © (2009-10-08 14:21) [0]Имеются две таблицы:
основная-
create table gorn_key_dok(
key Long NOT NULL, --
key_gorn_tip_dok Long NOT NULL default 0, |
key_dok Long NOT NULL default 0 |
) |
подчиненная- |
create table gorn_oper( |
key Long NOT NULL, |
key_gorn_dok Long NULL default 0, <-
data_oper DateTime NULL,
lschet VarChar(11) NULL,
glava VarChar(50) NULL,
razdel VarChar(50) NULL,
statia VarChar(50) NULL,
vid VarChar(50) NULL,
klass VarChar(50) NULL,
add_klass VarChar(50) NULL
)
Помогите составить SQL-запрос на запись данных в эти таблицы.
Зарание благодарю
← →
Медвежонок Пятачок © (2009-10-08 15:10) [1]insert into table1() values()
insert into table2() values()
← →
Виталий Панасенко(дом) (2009-10-08 17:41) [2]"копай" в сторону связи master-detail
← →
vturkevich © (2009-10-09 06:59) [3]Вот я и не знаю как реализовать этот мастер-детайл в SQL-запросе.
А средствами ADO все работает но уж очень медленно (10-15 записей около 3 минут).
← →
Sergey13 © (2009-10-09 09:34) [4]> [3] vturkevich © (09.10.09 06:59)
> Вот я и не знаю как реализовать этот мастер-детайл в SQL-запросе.
так вот же тебе ответили.
> [1] Медвежонок Пятачок © (08.10.09 15:10)
чего еще хочется?
> [3] vturkevich © (09.10.09 06:59)
> А средствами ADO все работает но уж очень медленно (10-15
> записей около 3 минут).
Ну так показывай свою реализацию.
← →
Медвежонок Пятачок © (2009-10-09 10:06) [5]теперь смотри за полетом своей мысли:
на самом деле ты:
1. Вот я и не знаю как реализовать этот мастер-детайл в SQL-запросе.
а спрашиваешь:
2. Помогите составить SQL-запрос на запись данных в эти таблицы.
← →
vturkevich © (2009-10-09 11:41) [6]rez:=false;
try
datamodule2.tip_dok.locate("tip_dok",tip_dok,[]);
datamodule2.gorn_key_dok.append;
datamodule2.gorn_key_dok.fieldbyname("key_gorn_tip_dok").asinteger:=datamodule2. tip_dok.fieldbyname("key").asinteger;
datamodule2.gorn_key_dok.fieldbyname("key_dok").asinteger:=key_dok;
datamodule2.gorn_key_dok.post;
datamodule2.gorn_key_dok.refresh;
datamodule2.gorn_oper.append;
datamodule2.gorn_oper.fieldbyname("key_gorn_dok").asinteger:=datamodule2.gorn_ke y_dok.fieldbyname("key").asinteger;
datamodule2.gorn_oper.fieldbyname("data_oper").asdatetime:=data;
datamodule2.gorn_oper.fieldbyname("lschet").asstring:=ls;
datamodule2.gorn_oper.fieldbyname("glava").asstring:=gl;
datamodule2.gorn_oper.fieldbyname("razdel").asstring:=rz;
datamodule2.gorn_oper.fieldbyname("statia").asstring:=st;
datamodule2.gorn_oper.fieldbyname("vid").asstring:=vid;
datamodule2.gorn_oper.fieldbyname("klass").asstring:=kl;
datamodule2.gorn_oper.fieldbyname("add_klass").asstring:=add_kl;
datamodule2.gorn_oper.fieldbyname("summa").asfloat:=summa;
datamodule2.gorn_oper.fieldbyname("operacia").asboolean:=prihod;
datamodule2.gorn_oper.post;
rez:=true;
datamodule2.gorn_oper.refresh;
except
if not rez then
begin
if datamodule2.Gorn_key_dok.State in [dsEdit,dsInsert] then
datamodule2.Gorn_key_dok.Cancel
else
if datamodule2.gorn_oper.State in [dsEdit,dsInsert] then
begin
datamodule2.gorn_oper.Cancel;
datamodule2.gorn_key_dok.Delete;
end;
end;
end;
result:=rez;
Этот набор повторяется в цикле для всех выделенных докаментов
и из-за повторения команд { .refresh } запись протекает достаточно долго, и без них выдает ошибки.
Потому и хочу реализовать это в виде SQL -запроса, а обнавлять набор данных по завершении цикла.
Убедительная просьба знатокам SQL, помочь. СПАСИБО!
← →
vturkevich © (2009-10-09 11:46) [7]За полетом мысли я слежу...
Если бы я знал как реализуется на SQL , при записи, конструкция мастер-детайл, то уже реализовал бы
← →
Виталий Панасенко (2009-10-09 12:20) [8]Вставить запись в мастер, получить ИД(это у тебя KEY), при вставке в деталь подставлять полученное значение в KEY_GORN_DOK
← →
Виталий Панасенко (2009-10-09 12:22) [9]У АДО компонет есть такое св-во, как dataSource.. это DataSource мастер-таблицы.. в детали пишешь правильный запрос и все отлично работает, без всяких рефрешев и т.д.
← →
Виталий Панасенко (2009-10-09 12:25) [10]сам сиквел о мастер-детали, я думаю, не знает абсолютно ничего.. он знает, что в такой-то таблице можгут хранится в таком-то поле данные, которые ОБЯЗАТЕЛЬНО есть в другой таблице.. это я о детали и мастере соответственно
← →
Медвежонок Пятачок © (2009-10-09 13:04) [11]Если бы я знал как реализуется на SQL , при записи, конструкция мастер-детайл
В SQL такая конструкция никак не реализуется потому чт ее нет.
Это чисто умозрительное понятие
← →
sniknik © (2009-10-09 16:17) [12]> Вставить запись в мастер, получить ИД(это у тебя KEY)
получать нужно если оно генерится (автоинкремент/дефаулт), а у него простое значение, т.е. просто - придумываем значение ключа (генерим сами), и с этим значением пишем и в мастер таблицу и в подчиненную. (сюда - key и сюда - key_gorn_dok, если правильно понял его связь), все, по этому потом можно построить мастер детайл/обьеденение в запросе/диаграмму/... х.з. чего еще, главное связь есть.
← →
ANB (2009-10-15 17:39) [13]@@identiti - вроде так. примера по рукой нет. Если не лень - гляди в БОЛ.
Инсерт в мастер таблицу нужно выполнять через опен.
← →
хз (2009-10-15 19:26) [14]
> Инсерт в мастер таблицу нужно выполнять через опен.
Опен не возвращает резалтсет.
Екзэк тут нужен.
← →
хз (2009-10-15 19:28) [15]@@Identity вернет последний сгенерированный ключ для автоинкрементного поля, например, после инсерта. А если там таймстамп или ручное чего?
← →
ANB (2009-10-16 11:09) [16]
> Опен не возвращает резалтсет.
> Екзэк тут нужен.
??????????? Ничего не перепутал ??????????
← →
sniknik © (2009-10-16 11:18) [17]он имеет ввиду открывать пакет из 2х команд, инсерта и тут же запроса с @@identity, правда написал так "понятно", что лучше бы вообще не писал... того кто сам не знает только запутает.
но вообще вы оба упускаете одну вещь, хотя структура таблиц у вас перед глазами (в [0]), автоинкрементов у него нет...
← →
Anatoly Podgoretsky © (2009-10-16 11:20) [18]хз (15.10.09 19:26) [14] "
Ни, только Open
← →
Anatoly Podgoretsky © (2009-10-16 11:23) [19]
> но вообще вы оба упускаете одну вещь, хотя структура таблиц
> у вас перед глазами (в [0]), автоинкрементов у него нет.
> ..
Из приведеной структуры это не ясно, может есть, а может нет.
Ведь объяем и качество предоставленой операции соответствует уровню начинащиего.
← →
ANB (2009-10-16 11:28) [20]
> но вообще вы оба упускаете одну вещь, хотя структура таблиц
> у вас перед глазами (в [0]), автоинкрементов у него нет.
> ..
Млин. А какие тогда проблемы могут быть ? Разве что он триггером ID заполняет.
Но тогда в самом триггере тормоза и будут, потому как явно макс+1 использует. Генераторов в мс скл нету. Может недавно появились ?
Вывод - автору учить основы заново. А потом уже писать программы.
← →
vturkevich © (2009-10-23 06:48) [21]Спасибо всем кто оказался небезучастен к моей проблеме, все разрешилось, и работает прекрасно полная отработка доков спустилась с 3 минут до 14 сек. Ваш , выше изложенный, диалог мне в этом очень помог.
Еще раз всех благодарю.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.004 c