![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL [D6, XP]
Konnor © (2006-05-16 14:13:00)Я создаю временную таблицу в SQL, дальше SQL-запрос должен выбрать нужные мне данные из 2-х сущствующих таблиц и заполнить временную. В процессе работы программа прерывается по ошибке: Insert Error: Column name or number of supplied values does not match table definition. В чем проблема????
Konnor (2006-05-16 15:56:00) [1]
> Что-то я не вижу разделителей команд...
А какие разделители ты хочеш увидеть??? На сколько я знаю их там и не должно быть...
Desdechado (2006-05-16 15:43:00) [2]> Непонятно зачем вообще временная таблица, если данные можно получить одним запросом
Поддерживаю.
SQLText :=
'SET DATEFORMAT dmy'+#13+
'DELETE FROM #temp1'+#13+
'INSERT INTO #temp1 '+#13+
'SELECT '+#13+
Что-то я не вижу разделителей команд...
Konnor (2006-05-16 15:32:00) [3]
> Add('Table1 int NOT NULL,');
> Add('Table2 int NOT NULL,');
>
> А это что?
Это определение существования таблиц (как мне объяснили), если их убрать то получаем: Column name 'Table1' does not exist in the target table
Konnor (2006-05-16 15:24:00) [4]
> Неплохо было бы в инсерте явно перечислить поля, которым
> ты присваиваешь значения.
Поточнее можно??? :)
ANB (2006-05-16 15:23:00) [5]Хе. Кстати, количество полей в таблице не совпадает с количеством поле в запросе (селекте). Есно, будет ошибка. Перечисли поля явно и заодно подумай над смыслом - чего куда и зачем ты пихаешь. Кстати, учти, что автоинкрементальные поля присваивать не надо.
Sergey13 (2006-05-16 15:23:00) [6]2 [10] Konnor © (16.05.06 15:16)
with Form1.Query.SQL do
begin
Clear;
Add('CREATE TABLE #temp1 (');
Add('Table1 int NOT NULL,'); Add('AutorFirstTime datetime NULL,');
Add('AutorLastTime datetime NULL,');
Add('AutorFirstId int NULL,');
Add('AutorLastId int NULL,');
Add('Table2 int NOT NULL,'); Add('AutorFirst varchar(20) NULL,');
Add('AutorLast varchar(20) NULL,');
Add('PRIMARY KEY (GroupNumber, Table1, Table2))');
end;
А это что?
ANB (2006-05-16 15:21:00) [7]Неплохо было бы в инсерте явно перечислить поля, которым ты присваиваешь значения.
Konnor (2006-05-16 15:16:00) [8]
> Я не знаток мелкомягкого сервера (это вроде он?), но в insert-
> е не видать полей table1 и table2. Зато есть GroupNumber
> и GroupName которых не видно в таблице.
table1 и table2 - Это существующие таблицы из которых я выбираю
Megabyte (2006-05-16 15:11:00) [9]Есть предположение, что MSSQL, т.к. у меня на работе СУБД MSSQL называют SQL. %)
Sergey13 (2006-05-16 15:11:00) [10]2[5] Konnor © (16.05.06 14:56)
Я не знаток мелкомягкого сервера (это вроде он?), но в insert-е не видать полей table1 и table2. Зато есть GroupNumber и GroupName которых не видно в таблице.
Непонятно зачем вообще временная таблица, если данные можно получить одним запросом.
Konnor (2006-05-16 15:02:00) [11]
> Что за чудо такое таблица в SQL
В смысле??
Anatoly Podgoretsky (2006-05-16 14:59:00) [12]Что за чудо такое таблица в SQL
Konnor (2006-05-16 14:56:00) [13]
> Количесво, порядок или типы полей в созданной временной
> таблице и запросе отличаются.
Да вроде все проверил:
Запрос:
SQLText :=
'SET DATEFORMAT dmy'+#13+
'DELETE FROM #temp1'+#13+
'INSERT INTO #temp1 '+#13+
'SELECT '+#13+
'Table1.AutorFirstTime,'+#13+
'Table1.AutorLastTime,'+#13+
'Table1.AutorFirstId,'+#13+
'Table1.AutorLastId,'+#13+
'Table2.AutorFirst,'+#13+
'Table2.AutorLast,'+#13+
'0 as GroupNumber, ''-'' AS GroupName'+#13+
'FROM Table1 as Table1, Table2 as Table2'+#13+
Временная таблица:
withForm1.Query.SQL do
begin
Clear;
Add('CREATE TABLE #temp1 (');
Add('Table1 int NOT NULL,');
Add('AutorFirstTime datetime NULL,');
Add('AutorLastTime datetime NULL,');
Add('AutorFirstId int NULL,');
Add('AutorLastId int NULL,');
Add('Table2 int NOT NULL,');
Add('AutorFirst varchar(20) NULL,');
Add('AutorLast varchar(20) NULL,');
Add('PRIMARY KEY (GroupNumber, Table1, Table2))');
end;
Ega23 (2006-05-16 14:29:00) [14]Количесво, порядок или типы полей в созданной временной таблице и запросе отличаются.
З.Ы. SQL - Structured Query Language.
Тебя спрашивали, какая СУБД.
Konnor (2006-05-16 14:21:00) [15]
> БД какая?
SQL
Sergey13 (2006-05-16 14:16:00) [16]2Konnor © (16.05.06 14:13)
БД какая?
balepa (2006-05-16 14:16:00) [17]Очевидно в этом Column name or number of supplied values does not match table definition.