Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2011, 12:12   #1
NeVirus
 
Регистрация: 15.08.2011
Сообщений: 6
По умолчанию sql запрос на удаление из связанных таблиц

Доброго времени суток,
Моя проблема в следующем - есть база данных в firebird, в ней несколько таблиц и к ним программа клиент на делфи. Возникла необходимость удаления массивов строк из базы по запросу - проблема моя в том что я не знаю как написать запрос на удаление если выборка идет из нескольких связанных таблиц...
на данный момент момент есть :
"
SQL_2.Active := false;
SQL_2.Close;
SQL_2.SelectSQL.Clear;

SQL_2.SelectSQL.Text := 'select t1.ul, t1.dom , t2.summa_itog, t2.id from Lics t1, invoice t2 where t1.lic = t2.lic and t1.ul = :ul and t1.dom between :dom_1 and :dom_2';
SQL_2.ParamByName('ul').AsString:= UL.Text;
SQL_2.ParamByName('dom_1').AsString := DOM_1.Text;
SQL_2.ParamByName('dom_2').AsString := DOM_2.Text;

SQL_2.Active := true;
ds.DataSet := SQL_2;

grid.DataSource := DS;

grid.Columns[0].FieldName:= SQL_2.FieldName(0);
grid.Columns[1].FieldName:= SQL_2.FieldName(1);
grid.Columns[2].FieldName:= SQL_2.FieldName(2);
"
и еще несколько подобных запросов выбирающих мне нужные строчки в дбгрид... как теперь силами самого делфи их удалить из базы?

Прошуровал поиск на скорую руку ответа не нашел... если что то пропустил ткните ссылку плз.

П.С. понимаю что из самого файрберда делается простейшей процедуркой, но обстоятельства таковы что нужно именно из делфи это делать

заранее спасибо за ответы
NeVirus вне форума Ответить с цитированием
Старый 22.11.2011, 12:19   #2
NeVirus
 
Регистрация: 15.08.2011
Сообщений: 6
По умолчанию

пробывал вот так:

SQL_3.Active := false;
SQL_3.Close;
SQL_3.SelectSQL.Clear;

ds.DataSet := SQL_3;

SQL_3.SelectSQL.Text:='DELETE From INVOICE Where ID = :ID';
SQL_3.ParamByName('ID').Value := SQL_2.FieldValues['id'];

SQL_3.Active := true;

но тогда выбирается только 1й ID и все...
NeVirus вне форума Ответить с цитированием
Старый 22.11.2011, 12:37   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

либо циклом пробегатся по датасету SQL_2, и каждый раз
Код:
SQL_3.SelectSQL.Text:='DELETE From INVOICE Where ID = :ID';
SQL_3.ParamByName('ID').Value := SQL_2.FieldValues['id'];

SQL_3.Active := true;
но правильнее по моему

Код:
SQL_2.SelectSQL.Text := 'DELETE From INVOICE 
Where ID in  (select  t2.id from Lics t1, invoice t2 where t1.lic = t2.lic and t1.ul = :ul and t1.dom between :dom_1 and :dom_2)';
SQL_2.ParamByName('ul').AsString:= UL.Text;
SQL_2.ParamByName('dom_1').AsString := DOM_1.Text;
SQL_2.ParamByName('dom_2').AsString := DOM_2.Text;

SQL_2.Active := true;
Использование компонентов и запросов просто скопировал из ваших постов, но смысл должен быть понятен.

Последний раз редактировалось vovk; 23.11.2011 в 11:17.
vovk вне форума Ответить с цитированием
Старый 23.11.2011, 12:01   #4
NeVirus
 
Регистрация: 15.08.2011
Сообщений: 6
По умолчанию

Спасибо, запрос немного изменил... но направление верное - сейчас все работает. Не подумал почему то про вложенный запрос... вот что бывает когда начальство ставуит тупые условия)))
NeVirus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос из связанных таблиц: выбрать слово минимальной длины Manonia SQL, базы данных 6 20.09.2010 06:00
SQL и Python - удаление/вставка таблиц и эл-ов, доступ к БД Graf Xandr Фриланс 2 24.02.2010 01:52
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
sql запрос на выборку записей из двух связанных таблиц Люсьен БД в Delphi 9 20.04.2009 16:07
SQL запрос из двух таблиц.(сложный) Miha87 БД в Delphi 5 10.11.2008 11:04