SQL-запрос 2. Можно ли одним запросом? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
Нужна таблица, отсортированная хитрым образом. Сейчас есть курсор (filenameid - id документа, shingles - определенные числа, коих у каждого документа штук 50):
fnameid1 N(10) - id одного документа fnameid2 N(10) - id второго документа sim N(12,10) - коэфициент равный отношению количества одинаковых для обоих документов чисел shingles (часть этих чисел у двух документов может совпадать, а другая часть нет) к сумме всех чисел shingles обоих документов. Например у doc_1 shingles будут: 1 2 4 а у doc_2: 1 2 3 4 (тоесть 3 общих числа shingles, а всего их 7. sim=3/7) тогда необходимо получит строку таблицы: doc_1, doc_2, 3/7 Можно ли это сделать одним запросом? |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Версия лисы? В 9-ке можно, но запрос не совсем маленький будет.
|
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
8-ка
|
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
http://india.ru/boards/sml/nomail.gif
Неужели вообще нет идей? Понимаю что задача нетривиальная, но все же? А то вчера весь вечер парился, но так ничего дельного и не сделал. Есть идея использовать seek, но неужели SQL-запросом нельзя? |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
Hel!Riser Сообщений: 10452 Откуда: Нижний Новгород Дата регистрации: 11.03.2001 |
вопщем-то тоже было фчера кинулся сочинять, но прочитаф условие повнимательней мой запрос не пошел. Поэтому идейка следущая - создать запрос с UDF, по образу и подобию, forum.foxclub.ru Т.е собрать в 2-х разных полях возрастающие числа... Далее для выяснения скока пофтороф - травим STRTRAN() и разница по модулю - тво:е делимое ну и далее собсна разделить это
блин долгий ответ получаеца у меня чем длиней. тем запутаней ------------------ Осторожно - глисты! |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
М-м-м... Побежал обдумывать
|
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
Бураков Сергей Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Попробуй так:
CREATE CURSOR t (id n(3),num n(3)) INSERT INTO t (id,num) VALUES (1,1) INSERT INTO t (id,num) VALUES (1,2) INSERT INTO t (id,num) VALUES (1,3) INSERT INTO t (id,num) VALUES (1,4) INSERT INTO t (id,num) VALUES (2,1) INSERT INTO t (id,num) VALUES (2,2) INSERT INTO t (id,num) VALUES (2,3) SELECT a.id,b.id,COUNT(*)/(c.sum+d.sum) FROM (t a INNER JOIN t b ON a.num=b.num AND a.id<b.id ) ; INNER JOIN (SELECT COUNT(*) as sum,id from t GROUP BY id) c ON c.id=a.id ; INNER JOIN (SELECT COUNT(*) as sum,id from t GROUP BY id) d ON d.id=b.id ; GROUP BY a.id,b.id,c.id,c.sum,d.id,d.sum |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi Сергей!
У него 8-ка, там это не прокатит Хотя "доработать" под 8-ку этот запрос (выделив в отдельный процесс подсчёт "общего числа" записей) IMHO не составляет никакого труда. ------------------ WBR, Igor |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
to Бураков Сергей
Позвал пэхэписта, тот посмотрел на запрос: "Ни..я себе! Это сколько ж надо выпить, чтоб написать такой запрос. Я б не додумался." Но на второй строке запроса выдает синтаксическую ошибку. to Igor Korolyov А почему в 8-ке не катит? Цитата: А не подскажите как? А то получается уж слишком:
|
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
rusl писал(а):
Цитата: Это, батенька, еще простенький И при этом я, заметь, совсем не пью Цитата: Потому что для 9-ки. Там сняты многие ограничения на количество и места вставки вложенных запросов. |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi rusl!
Ну незнание SQL не есть положительная черта программиста... Так что гордится тому господину нечем - пускай лучше почитает умных книжек по SQL-ю. Для 8-ки:
------------------ WBR, Igor |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
Бураков Сергей Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Извиняюсь, не заметил, что у меня была девятка запущена.
А вообще, принципиально ли, чтобы это был именно один SQL-запрос. В общем случае программа работает быстрее, чем запрос. Достоинство запроса в том, что его писать быстрее, ну, может еще, если создаешь представление. Хотя, когда я начинал еще SQL изучать, то на написание одного запроса по паре дней уходило. |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
Бураков Сергей Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
На восьмерке можно одним запросом при помощи собственной функции:
CREATE CURSOR t (id n(3),num n(3)) INSERT INTO t (id,num) VALUES (1,1) INSERT INTO t (id,num) VALUES (1,2) INSERT INTO t (id,num) VALUES (1,3) INSERT INTO t (id,num) VALUES (1,4) INSERT INTO t (id,num) VALUES (2,1) INSERT INTO t (id,num) VALUES (2,2) INSERT INTO t (id,num) VALUES (2,3) SELECT a.id,b.id,COUNT(*)/(nsum(a.id,b.id)) FROM (t a INNER JOIN t b ON a.num=b.num AND a.id<b.id ) GROUP BY a.id,b.id FUNCTION nsum LPARAMETERS a,b SELECT t COUNT FOR id=a OR id=b TO s RETURN s |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
to Бураков Сергей
В принципе конечно одним запросом необязательно. Но не одним у меня не очень получилось (см. код выше 9 сообщение). А 9-ку мне нигде в Питере не найти to Igor Korolyov Круто, работает! Вроде все верно считает. |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
Бураков Сергей Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
Если халявный быстрый Интернет, скачай на mail.ru , имя VFP9 пароль VFP9.
Если нет, позвони мне 349-64-89 вечером, я на Комендантском живу. |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
А сколько весит? И как это скачать на mail.ru? Это же почта.
|
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
Бураков Сергей Сообщений: 280 Откуда: Calgary Дата регистрации: 07.02.2005 |
300 M.
А ты ее скачиваешь как почту, как адресат с именем VFP9 и таким же паролем. |
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
И не забудь убрать галочку в своей почтовке "Удалать сообщения с сервера" или что-то подобное.
|
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
rusl Автор Сообщений: 200 Откуда: СПб Дата регистрации: 01.02.2005 |
У меня метр около 2-х рублей. Получается дороговато 600 р.
|
Re: SQL-запрос 2. Можно ли одним запросом? | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
И что, даже пустую болванку CD-R послать, чтоб записали и прислали обратно, некому? У меня, помниться, в свое время 8-й фокс по Белоруссии таким способом лихо разошелся
|
© 2000-2024 Fox Club  |