:: Архив конференции по VFP до 2005 года
SQL-запрос
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Разбиваю текстовые файлы на слова и записываю их в курсор, в котором два поля (айди файла, к которому принадлежит слово и само слово).
Таким образом у меня есть курсор (lcCursorName) (FileNameID I, SubWord C(50)), есть таблица (m.lcTableName) (FileNameID I, Word C(50), Frequency N(10, 9)) и есть общее количество слов в файле (lnCountOfWords).

Как написать SQL-запрос к курсору, который будет записывать в таблицу (m.lcTableName) частоту слов в файлах и сортировать все в этой таблице сначала по FileNameID, потом по Frequency?
Ratings: 0 negative/0 positive
Re: SQL-запрос
Aries

Сообщений: 4349
Откуда: Николаев
Дата регистрации: 24.12.2002
INSERT INTO (m.lcTableName) (FileNameID, Word, Frequency) ;
SELECT FileNameID, SubWord, COUNT(SubWord)+0000000000 AS Frequency FROM (lcCursorName) ;
GROUP BY SubWord ORDER BY FileNameID, Frequency

Попробуй так.



Отредактировано (20.02.05 19:45)


------------------
Я бы переписал жизнь, но Бог не дает мне исходники (с)
==============================
Злостный линуксоид!
Ratings: 0 negative/0 positive
Re: SQL-запрос
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Выдает "Not a character expression"

Но не суть. У меня подобный вышел:
SELECT FileNameID, SubWord, count(SubWord) as Frequency FROM (m.lcCursorName);
GROUP BY FileNameID, SubWord INTO cursor (m.lcTableName)

А можно ли одним запросом получить условную частоту (то есть число одинаковых слов для одного айди файла разделить на общее количество слов для этого айди)?



Отредактировано (20.02.05 20:13)


------------------
Ratings: 0 negative/0 positive
Re: SQL-запрос
Aries

Сообщений: 4349
Откуда: Николаев
Дата регистрации: 24.12.2002
Если не сложно, выложи таблички. Я у себя запущу и посмотрю. А то идея есть, но преверить стоит, а то вдруг не работает.




------------------
Я бы переписал жизнь, но Бог не дает мне исходники (с)
==============================
Злостный линуксоид!
Ratings: 0 negative/0 positive
Re: SQL-запрос
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
[url]www.rusl.ru\logs\fox.zip[/url]

тут все... ;)
Ratings: 0 negative/0 positive
Re: SQL-запрос
Aries

Сообщений: 4349
Откуда: Николаев
Дата регистрации: 24.12.2002
Одним запросом не получается




------------------
Я бы переписал жизнь, но Бог не дает мне исходники (с)
==============================
Злостный линуксоид!
Ratings: 0 negative/0 positive
Re: SQL-запрос
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
Ну в таком случае, как хоть не одним? Сижу ломаю голову, как " число одинаковых слов для одного ай-ди файла разделить на общее количество слов для этого ай-ди"?

Как это сосчитать?!
Ratings: 0 negative/0 positive
Re: SQL-запрос
Aries

Сообщений: 4349
Откуда: Николаев
Дата регистрации: 24.12.2002
SELECT FileNameID, SubWord, COUNT(SubWord) AS CountEqual FROM (m.lcCursorName1) ;
GROUP BY FileNameID, SubWord INTO CURSOR aaa
SELECT aaa.FileNameID, SUM(aaa.CountEqual) AS CountEqual ;
FROM aaa GROUP BY FileNameID INTO CURSOR bbb
SELECT aaa.FileNameID, aaa.SubWord, aaa.CountEqual/bbb.CountEqual AS Chastota ;
FROM aaa ;
LEFT OUTER JOIN bbb ON aaa.FileNameID=bbb.FileNameID ;
INTO CURSOR (lcCursorName2)
Проверь




------------------
Я бы переписал жизнь, но Бог не дает мне исходники (с)
==============================
Злостный линуксоид!
Ratings: 0 negative/0 positive
Re: SQL-запрос
rusl
Автор

Сообщений: 200
Откуда: СПб
Дата регистрации: 01.02.2005
О-о-о! Здорово.

Пока не проверил все досконально, но вроде сработало.
Ratings: 0 negative/0 positive
Re: SQL-запрос
Aries

Сообщений: 4349
Откуда: Николаев
Дата регистрации: 24.12.2002
Если что стучись в аську. Я пока с клуба сваливаю, но в аське еще пару часиков буду.




------------------
Я бы переписал жизнь, но Бог не дает мне исходники (с)
==============================
Злостный линуксоид!
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 3 Victoriacom  (Гостей: 2)

© 2000-2024 Fox Club 
Яндекс.Метрика