Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.044 c
15-1146924039
User_OKA
2006-05-06 18:00
2006.06.04
Коммутатор


1-1145898815
Kolan
2006-04-24 21:13
2006.06.04
Как передать массив записей используя технологию COM?


3-1144488504
beglec
2006-04-08 13:28
2006.06.04
MS SQL или MySQL


15-1147325915
Ega23
2006-05-11 09:38
2006.06.04
С Днём рождения! 11 мая


2-1147855038
aleshap
2006-05-17 12:37
2006.06.04
Метод





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский