Форум: "Начинающим";
Текущий архив: 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