|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Объединение одинаковых таблиц с помощью SQL
Вот у меня есть три таблицы, с одинаковой структурой но разными значениями. Мне нужно все эти данных занести в одну таблицу, с помощью sql запроса. Вот один компонент table, загружает первую таблицу, затем с помощью запроса данные из table копируются в tquery, затем table загружает вторую таблицу, в query снова добавляются данные. И так всего три раза. Просто у меня три таблицы и данные в них за три смены, а мне нужно все эти данные о трех сменах сделать в одну таблицу. Я написал вот то:
Код:
table1.tablename:='1.dbf'; query1.close; query1.sql.text:='insert 3smeni values (select * from table1) query1.open Ну а после всего этого, я выведу данные в dbgrid query1.sql.text:='select * from 3smeni' Но все это не работает. Ругается на эту строку - query1.sql.text:='insert 3smeni values (select * from table1). Помогите. |
#2
|
||||
|
||||
Какое субд?Может так?
Код:
INSERT INTO TABLE_ALL (field1,field2,field3) VALUES ( SELECT field1,field2,field3 FROM TABLE1 UNION ALL SELECT field1,field2,field3 FROM TABLE2 UNION ALL SELECT field1,field2,field3 FROM TABLE3 ) Последний раз редактировалось Admin, Сегодня в 10:32. |
#3
|
|||
|
|||
Delphi 7 у меня.
|
#4
|
||||
|
||||
СУБД - система управления базами данных...... В общем с какой базой работаешь? Oracle, MySQL,MS SQL.... ? Код:
query1.sql.text:='INSERT INTO TABLE_ALL (field1,field2,field3) VALUES ( SELECT field1,field2,field3 FROM TABLE1 UNION ALL SELECT field1,field2,field3 FROM TABLE2 UNION ALL SELECT field1,field2,field3 FROM TABLE3 )' query1.execsql Последний раз редактировалось Admin, Сегодня в 10:32. |
#5
|
|||
|
|||
ни с какой. Мне в Delphi нужно сделать программу которая загружает локальные базы данных и делает с ними определенные вещи. SQL я хочу использовать для удобства.
|
#6
|
||||
|
||||
может так?
Код:
procedure TForm1.Button2Click(Sender: TObject); var tablelist:TStringList; i:integer; table_priemnik:string; begin table_priemnik:='TABLE_A.DBF'; //таблица в которую пишем tablelist:=TStringList.Create; tablelist.Add('TABLE1.DBF'); //список таблиц которые надо прочитать tablelist.Add('TABLE2.DBF'); FOR I:=0 TO tablelist.Count-1 do //запускаем цикл по таблицам begin Query1.SQL.Text:='SELECT field1,field2 from '+tablelist[i]; //формируем запрос на получение данных из таблицы Query1.Open; Query2.sql.Text:='INSERT INTO '+table_priemnik+' (field1,field2) VALUES (:field1,:field2)'; //формируем запрос на вставку данных в таблицу приемника while not(Query1.Eof) do begin Query2.ParamByName('field1').Value:=Query1.FieldByName('field1').AsString; //устанавливаем значение параметрам Query2.ParamByName('field2').Value:=Query1.FieldByName('field2').AsString; Query2.ExecSQL; //выполняем запрос на вставку Query1.Next; end; Query1.Close; Query2.Close; end; end; Последний раз редактировалось Admin, Сегодня в 10:32. |
#7
|
|||
|
|||
Цитата:
А зачем это? |
#8
|
||||
|
||||
в запросе мы используем параметры :field1 и :field2..
данными строками мы присваиваем параметрам значения Последний раз редактировалось Admin, Сегодня в 10:32. |
#9
|
|||
|
|||
Спасибо! Помогло.
|