Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо