![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цикл в хранимой процедуре [D7, IB7.5]
RomanH © (2006-04-17 14:17:00)Мастера подскажите каким образом можно сделать такую конструкцию
While not DataSet1.EOF do
begin
if DataSet1.FieldValue[N1]=DataSet2.FieldValue[N1] then
Действие1
else
Действие2
end;
в хранимой процедуре.
Johnmen (2006-04-17 15:27:00) [1]Да в том же самом LangRef.pdf про всё это написано. В спецификации команд SELECT и DELETE.
Ещё полезно просто спецификацию SQL92 почитать. Где искать не скажу, не помню...
Sergey13 (2006-04-17 15:25:00) [2]2 [8] RomanH © (17.04.06 15:18)
DELETE FROM Table1 T1 WHERE EXISTS (SELECT 1 FROM Table2 T2 T1.Field=T2.Field)
Подстрочник.
Удалить из таблицы1 записи, для которых существует хотя бы одна запись в таблице2 с кодом, таким же как и в таблице1.
8-)
ЗЫ: Поиши в сети по "ГРУБЕР + SQL" для понимания.
RomanH (2006-04-17 15:18:00) [3]
> Johnmen ©
Подскажите где можно почитать про понимание языка SQL.
Мне бы тоже хотелось бы как вы, все это реализовать двумя строчками.
Да вторую строку я понимаю полностью а вот с первой ни как не соображу.
DELETE FROM Table1T1 WHERE EXISTS (SELECT 1 FROM Table2 T2T1.Field=T2.Field)
Johnmen (2006-04-17 15:09:00) [4]
1. DELETE FROM Table1 T1 WHERE EXISTS (SELECT 1 FROM Table2 T2 WHERE T1.Field=T2.Field)
2. INSERT INTO Table2 SELECT * FROM Table1
Desdechado (2006-04-17 15:07:00) [5]если сравнение по одному полю, то все проще
delete from T1 where N1 IN( select N2 from T2 );
insert into t2 select * from t1
RomanH (2006-04-17 15:01:00) [6]Имеются таблицы Table1 и Table2.
В хранимой процедуре необходимо сравнить значения из Table1 со значениями Table2. Если такие записи существуют то их надо удалить из Table1. Оставшиеся записи таблицы Table1 добавить в Table2.
Johnmen (2006-04-17 14:54:00) [7]
> Подскажите в таком случае будут ли все значения N1 из Table1
> сравниваться со всеми значениями Table2.
Не понял... Каждое с каждым что ли??? Зачем???
Что вообще надо?
RomanH (2006-04-17 14:46:00) [8]Я читаю документацию (LangRef.pdf) .Не могу понять как это работает
select count(*) from Table1 into Rec_Count;
if (i<=Rec_Count) do
begin
for select N1 from Table1 into :NN1 do
begin
select N1 from Table 2 into :NN2
if NN1=NN2 then Действие
end
i=i+1;
end;
Подскажите в таком случае будут ли все значения N1 из Table1 сравниваться со всеми значениями Table2.
Johnmen (2006-04-17 14:24:00) [9]FOR SELECT ...
А почему ты не читаешь документацию?
RomanH (2006-04-17 14:19:00) [10]Извините Next забыл набисать
While not DataSet1.EOF do
begin
if DataSet1.FieldValue[N1]=DataSet2.FieldValue[N1] then
Действие1
else
Действие2
DataSet1.Next;
end;