Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.04;
Скачать: CL | DM;

Вниз

SQL   Найти похожие ветки 

 
Konnor ©   (2006-05-16 14:13) [0]

Я создаю временную таблицу в SQL, дальше SQL-запрос должен выбрать нужные мне данные из 2-х сущствующих таблиц и заполнить временную. В процессе работы программа прерывается по ошибке: Insert Error: Column name or number of supplied values does not match table definition. В чем проблема????


 
Sergey13 ©   (2006-05-16 14:16) [1]

2Konnor ©   (16.05.06 14:13)
БД какая?


 
balepa ©   (2006-05-16 14:16) [2]

Очевидно в этом Column name or number of supplied values does not match table definition.


 
Konnor ©   (2006-05-16 14:21) [3]


> БД какая?

SQL


 
Ega23 ©   (2006-05-16 14:29) [4]

Количесво, порядок или типы полей в созданной временной таблице и запросе отличаются.

З.Ы. SQL - Structured Query Language.
Тебя спрашивали, какая СУБД.


 
Konnor ©   (2006-05-16 14:56) [5]


> Количесво, порядок или типы полей в созданной временной
> таблице и запросе отличаются.


Да вроде все проверил:
Запрос:
 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+


Временная таблица:
 
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;


 
Anatoly Podgoretsky ©   (2006-05-16 14:59) [6]

Что за чудо такое таблица в SQL


 
Konnor ©   (2006-05-16 15:02) [7]


> Что за чудо такое таблица в SQL

В смысле??


 
Sergey13 ©   (2006-05-16 15:11) [8]

2[5] Konnor ©   (16.05.06 14:56)
Я не знаток мелкомягкого сервера (это вроде он?), но в insert-е не видать полей table1 и table2. Зато есть GroupNumber и GroupName которых не видно в таблице.

Непонятно зачем вообще временная таблица, если данные можно получить одним запросом.


 
Megabyte ©   (2006-05-16 15:11) [9]

Есть предположение, что MSSQL, т.к. у меня на работе СУБД MSSQL называют SQL. %)


 
Konnor ©   (2006-05-16 15:16) [10]


> Я не знаток мелкомягкого сервера (это вроде он?), но в insert-
> е не видать полей table1 и table2. Зато есть GroupNumber
> и GroupName которых не видно в таблице.

table1 и table2 - Это существующие таблицы из которых я выбираю


 
ANB ©   (2006-05-16 15:21) [11]

Неплохо было бы в инсерте явно перечислить поля, которым ты присваиваешь значения.


 
Sergey13 ©   (2006-05-16 15:23) [12]

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:23) [13]

Хе. Кстати, количество полей в таблице не совпадает с количеством поле в запросе (селекте). Есно, будет ошибка. Перечисли поля явно и заодно подумай над смыслом - чего куда и зачем ты пихаешь. Кстати, учти, что автоинкрементальные поля присваивать не надо.


 
Konnor ©   (2006-05-16 15:24) [14]


> Неплохо было бы в инсерте явно перечислить поля, которым
> ты присваиваешь значения.

Поточнее можно??? :)


 
Konnor ©   (2006-05-16 15:32) [15]


>   Add("Table1 int NOT NULL,");
>   Add("Table2 int NOT NULL,");
>
> А это что?


Это определение существования таблиц (как мне объяснили), если их убрать то получаем: Column name "Table1" does not exist in the target table


 
Desdechado ©   (2006-05-16 15:43) [16]

> Непонятно зачем вообще временная таблица, если данные можно получить одним запросом
Поддерживаю.

SQLText :=
  "SET DATEFORMAT dmy"+#13+
  "DELETE FROM #temp1"+#13+
  "INSERT INTO #temp1 "+#13+
  "SELECT "+#13+
Что-то я не вижу разделителей команд...


 
Konnor ©   (2006-05-16 15:56) [17]


> Что-то я не вижу разделителей команд...

А какие разделители ты хочеш увидеть??? На сколько я знаю их там и не должно быть...



Страницы: 1 вся ветка

Текущий архив: 2006.06.04;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.052 c
15-1147185747
Nous Mellon_
2006-05-09 18:42
2006.06.04
об URL


15-1146930890
Nick Denry
2006-05-06 19:54
2006.06.04
как настроить apache локально?


15-1147412642
User_OKA
2006-05-12 09:44
2006.06.04
Watches


2-1148054439
Мурзилка
2006-05-19 20:00
2006.06.04
кодировки


2-1147695811
KyRo
2006-05-15 16:23
2006.06.04
Bat Fail