Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / прошу помощи - >Запрос -> номер строки / 22 сообщений из 22, страница 1 из 1
17.12.2004, 10:01
    #32831609
help123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
Вот такая задача:
Необходимо сделать запрос чтобы кроме выбранных данных был еще столбец (например - RowNo), где указан номер записи строки в базовой таблице.
Что-то не получается это сделать.....
...
Рейтинг: 0 / 0
17.12.2004, 10:04
    #32831617
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
select recno() as RecNum, ... from ...
...
Рейтинг: 0 / 0
17.12.2004, 10:08
    #32831625
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
это прокатит тока в случае выборки данных из одной таблицы
...
Рейтинг: 0 / 0
17.12.2004, 10:10
    #32831632
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
Но в recno() можно и параметр задать, для какой именно таблицы.
...
Рейтинг: 0 / 0
17.12.2004, 10:25
    #32831677
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
:) можна. Но попробовать получить неправильный результат еще лехче ;)
...
Рейтинг: 0 / 0
17.12.2004, 10:25
    #32831680
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
2 Hel!Riser

Да, прав, параметр не спасает.
Придется для выборки из нескольких таблиц делать как минимум 2 селекта.
...
Рейтинг: 0 / 0
17.12.2004, 10:33
    #32831710
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
:) не, терь по делу. Нужно пользовать свою UDF
зыпрос примерно выглядять будет так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT a.cIDa, MyRecnoInA(a.cIDa), b.cIDb, MyRecnoInB(b.cIDb) ;
FROM MyTable1 a INNER JOIN MyTable2 b ON a.cIDa=b.cIDRelationToA

FUNCTION MyRecnoInA (tcID)
=SEEK(tcID,'MyTable1','cIDa')
RETURN RECNO(MyTable1')

FUNCTION MyRecnoInB (tcID)
=SEEK(tcID,'MyTable2','cIDb')
RETURN RECNO(MyTable2')
...
Рейтинг: 0 / 0
17.12.2004, 11:00
    #32831787
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
2riser
а сами пробывали первое впечатление что бред какой-то
seek в запросе и тот же recno()
фишка то в чем воду что ли замутить а
...
Рейтинг: 0 / 0
17.12.2004, 11:04
    #32831794
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
с таким раскладом можно и fopen с fseek использовать если бы файл не блокировался
...
Рейтинг: 0 / 0
17.12.2004, 11:10
    #32831810
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
2leaf
Первые фпечатления они обманчивые бывают ;) Так шта попробуй и щастье с номером строки получица по-любому :) тока ессна подправить кавычки
Код: plaintext
RECNO('MyTable1')
...
Рейтинг: 0 / 0
17.12.2004, 11:15
    #32831826
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
2 leaf

Да, все это работает.
...
Рейтинг: 0 / 0
17.12.2004, 11:23
    #32831849
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
а с какой скоростью оно работает если вообще работает
ну тогда уж просто отсканировать одну таблицу присоедняя вторую через seek
и сливать все в курсор предварительно созданый и не мутить воду
грибам место в лесу а seek место в цикле но не в запросе хотя может я отстал от жизни
...
Рейтинг: 0 / 0
17.12.2004, 11:26
    #32831858
AleksMed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
2 leaf

Скорость конечно пострадает, ну на больших объемах и т.п.
Почему я и предложил, как вариант, несколько запросов.
...
Рейтинг: 0 / 0
17.12.2004, 11:27
    #32831869
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
2leaf
у решения задачи есть как минимум 2 способа. Данный запрос покрывает сабж без сканирования и многопроходности ;Р но флеймить я тоже люблю
...
Рейтинг: 0 / 0
17.12.2004, 11:36
    #32831893
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
ага элементарная прикидка даже если ваша конструкция работоспособна
на одну запись две команды поиска плюс вносимый сумбур в план запроса
неизвестно как запрос отреагирует на подобные скачки
а при новигации 1 запись - 1 поиск
если уж на то пошло то по моему recno без параметров вполне точно выдаст номер записи по главной таблице так что нужна одна функция
если отвлечься от всего остального
...
Рейтинг: 0 / 0
17.12.2004, 11:42
    #32831915
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
bla-bla-bla
...
Рейтинг: 0 / 0
17.12.2004, 12:06
    #32831990
PaulWist_asGuest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
Есть, маленькая тонкость, приведенный Hel!Riser алгоритм поиска возвратит верный результат при отношении один к одному, в противном случае результат будет неверным

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE CURSOR cParent (ID i, TParent c( 20 ))
CREATE CURSOR cChild (ID i, TChild c( 20 ))

FOR i =  1  TO  2 
	INSERT INTO cParent (id, TParent) VALUES (i, 'cParent ' + TRANSFORM(i))
	FOR j =  1  TO  2 
		INSERT INTO cChild (id, tChild)  VALUES (i, 'cChild ' + TRANSFORM(i))
	ENDFOR 
ENDFOR 

SELECT cParent
INDEX ON id TAG id

SELECT cChild 
INDEX ON id TAG id

SELECT a.ID as ParentID, MyRecnoInA(a.ID) as RecnoParent, b.ID ChildID, MyRecnoInB(b.ID) as RecnoChild ;
FROM cParent a INNER JOIN cChild b ON a.ID = b.ID

FUNCTION MyRecnoInA (tcID)
=SEEK(tcID,'cParent','ID')
RETURN RECNO('cParent')

FUNCTION MyRecnoInB (tcID)
=SEEK(tcID,'cChild','ID')
RETURN RECNO('cChild')

как видим, RecnoChild всегда будет первое найденное по SEEK
...
Рейтинг: 0 / 0
17.12.2004, 12:10
    #32832000
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
нееее. если внимательна посмотреть запрос, то в ф-цию от чилдрена я передевал ИД как ПК этого чилдрена ;) связка-то другая ;) В любом случае для связаной таблицы нужен ПК или Сандидат для однозначного сИка :}
...
Рейтинг: 0 / 0
17.12.2004, 12:22
    #32832032
PaulWist_asGuest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
авторнееее. если внимательна посмотреть запрос, то в ф-цию от чилдрена я передевал ИД как ПК этого чилдрена

Если он, конечно есть

(c) "Но мы-то ведь знаем, но мы-то ведь знаем, но мы-то ведь знаем, что этот остров не обитаем, т.е. абсолютно" (из песни)
...
Рейтинг: 0 / 0
17.12.2004, 12:33
    #32832064
PaulWist_asGuest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
Кстати, Sys(3054)

Result : NONE
...
Рейтинг: 0 / 0
18.12.2004, 23:54
    #32833581
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
Hi Hel!Riser!

Я бы (исключительно на всякий случай, "во избежание ..." так сказать ) в
таких функциях открыл эту таблицу под другим алиасом, и искал уже в ней.
У меня работают кое где UDF-ы бегающий по "запрашиваемым" таблицам (причём
там конечно посложнее код - и не "ту же самую запись" ищём) - скорость
низкая, но вполне приемлемая - в варианте с просто циклом заполняющим
аналогичный курсор - никакого выигрыша нету. Но ещё раз уточню - у меня ищет
не ту же запись, на которой "стоит" SELECT SQL в текущем проходе.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
19.12.2004, 17:39
    #32833833
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
прошу помощи - >Запрос -> номер строки
автортаких функциях открыл эту таблицу под другим алиасом, и искал уже в ней.
согласен. как оптимизирущий вариант фполне подходящее решение
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / прошу помощи - >Запрос -> номер строки / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]