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

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

SQL запрос [D5, dBase, FoxPro]


Chainik ©   (2002-06-03 11:11:00) 

Здравствуйте, уважаемые мастера! Помогите, пожайлуста, составить запрос, а то у меня че то не выходит(может синтаксис неверен?)
при такой конструкции:
....
with Query1 do begin
SQL.Clear;
SQL.Add("insert into C:\Temp\temp.dbf (Ccn1,Count) select Ccn,COUNT(*) FROM + "FileName" + GROUP BY Ccn");
SQL.Open;
end;
...
дельфя начинает ругаться, что мол синтаксис неправильный!Как будет правильно?


Бежечаночка   (2002-06-03 15:47:00) [1]

Не мучайся, с From Select у тебя ничего не получится в Local SQL, я задавала аналогичный вопрос в конфе, правильно пишет fnatali: в этом случае обходятся 2 запросами.


Chainik   (2002-06-03 15:38:00) [2]

>yozhik (03.06.02 14:50)
попробуй так ...
"insert into "C:\Temp\temp.dbf""+#13#10+

:((


yozhik   (2002-06-03 14:50:00) [3]

попробуй так ...
"insert into "C:\Temp\temp.dbf""+#13#10+
"select CAST(Ccn as CHARACTER(2)),CAST(COUNT(*) as CHARACTER(6))"+#13#10+
"FROM ""+FileName+"" GROUP BY Ccn"


Val   (2002-06-03 14:45:00) [4]

>fnatali © (03.06.02 14:24)
А вообще LocalSQL поддерживает подзапросы?
насколько я помню, в нем можно для таблиц одинаковой структуры сделать так:
insert into table2 select * from table1 <условие>


Chainik   (2002-06-03 14:37:00) [5]

>yozhik
Выдает - [MS ODBC Visual FoxPro Driver]Syntax error.".
Типы полей T - character (2), Kolvo Character (6)
>fnatali а у Вас есть какой-нить примерчик с исп. подзапросов?
Если есть, будьте добры, закиньте на мыло.


asafr   (2002-06-03 14:28:00) [6]

Пардон, GROUP BY - конечно


asafr   (2002-06-03 14:27:00) [7]

Может GROYP BY COUNT1
(COUNT в GROUP BY замени, хотя бы, на COUNT1, т.к. это зарезервированное слово)


fnatali   (2002-06-03 14:24:00) [8]

А вообще LocalSQL поддерживает подзапросы? Сомневаюсь я. Попробуй другим методом: первый запрос(Query1)
select Ccn,COUNT(*) FROM "" + FileName + "" GROUP BY Ccn
Второй запрос(Query2)
insert into "C:\Temp\temp.dbf" (Ccn1,Count) values(:p1,:p2);
Затем
Query1.first;
while not Query1.eof do
begin
Query2.parambyname("p1").as...=Query1.fieldbyname("Ccn1").as...
Query2.parambyname("p2").as...=Query1.fieldbyname("Count").as...
Query2.execsql;

Query1.next;
end;
Попробуй, должно получиться


yozhik   (2002-06-03 14:22:00) [9]

и какие типы полей в "C:\Temp\temp.dbf" ?


yozhik   (2002-06-03 14:21:00) [10]

а какую ошибку выдает?


Chainik   (2002-06-03 13:59:00) [11]

>yozhik (03.06.02 13:35)
<а так "insert into "C:\Temp\temp.dbf" (Ccn1,Count) select Ccn,COUNT(*) FROM "" + FileName + "" GROUP BY Ccn"?>
И так не идет!Проверил на вставку единичного значения
"insert into C:\Temp\temp.dbf (T,Kolvo) values ("01", "500")"- идет! А с подзапросом - не хочет!


yozhik   (2002-06-03 13:35:00) [12]

а так "insert into "C:\Temp\temp.dbf" (Ccn1,Count) select Ccn,COUNT(*) FROM "" + FileName + "" GROUP BY Ccn"?


Val   (2002-06-03 13:34:00) [13]

а можно текст запроса, у вас получается?


Chainik   (2002-06-03 13:30:00) [14]

В принципе вопрос стоит такой: мне нужно сохранить резулт запроса в таблице(временной).Может быть использовать что-то другое, кроме вставки?


Chainik   (2002-06-03 13:19:00) [15]

>PSZ Не идет и все тут!!!
Открыл MS VFoxPro и там не идет. Однозначно что-то с синтаксом.Но какой он должен быть???


yozhik   (2002-06-03 13:16:00) [16]

или так:
"insert into ""C:\Temp\temp.dbf"" (Ccn1,Count) select Ccn,COUNT(*) FROM" "" + FileName + "" "GROUP BY Ccn"


Chainik   (2002-06-03 13:05:00) [17]

>Val Пробовал в Explorer"e такая же ошибка
Переименовал.Если проблемы со вставкой подзапроса, то как быть?.Мне нужно чтобы запрос выполнялся динамически в проге.

>asafr
Пишет [MS ODBC Visual FoxPro Driver]Syntax error.".


PSZ   (2002-06-03 12:56:00) [18]

А еще может быть так:
"insert into ""C:\Temp\temp.dbf"" (Ccn1,Count) select Ccn,COUNT(*) FROM" + FileName + "GROUP BY Ccn"


asafr   (2002-06-03 12:41:00) [19]

А не так Ли надобно исправить?
"insert into C:\Temp\temp.dbf (Ccn1,Count) select Ccn,COUNT(*) FROM" + FileName + "GROUP BY Ccn"


Val   (2002-06-03 11:57:00) [20]

попробуйте выполнить свой запрос из SQL-explorer, вообще, у Local-SQL, по моему, какие-то проблемы со вставкой из подзапроса. И лучше переименовать в таблице temp поле Count - это служебное слово.


Наверх

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