Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / почему так / 10 сообщений из 10, страница 1 из 1
26.02.2009, 11:55
    #35838774
почему так
если набираю select recno() from x, то получаю номера записей, если набираю
select recno("x") from x, то получаю один номер записи, на котором стоит курсор
...
Рейтинг: 0 / 0
26.02.2009, 12:09
    #35838844
почему так
Не_проходи_мимо,
потому что таблица Х открытая в Select-SQL и та же таблица Х, но открытая в среде Фокса, - это "две большие разницы"...

Recno() - работает с текущей рабочей областью,
а RECNO("X") - работает с рабочей областью, в которой таблица имеет алиас "Х".

Далеко не факт, что Select-SQL "выдаст" таблице Х алиас "Х"... Особенно, если такая таблица уже открыта в Фоксе...
...
Рейтинг: 0 / 0
26.02.2009, 12:47
    #35838987
почему так
Но тогда, как мне сделать запрос(группировка отсутствует), чтоб при выборке показывались номера записей указанного алиаса, если запрос сложный с Join, то там везде надо указывать в полях алиас...
...
Рейтинг: 0 / 0
26.02.2009, 12:54
    #35839018
почему так
Не_проходи_мимоНо тогда, как мне сделать запрос(группировка отсутствует), чтоб при выборке показывались номера записей указанного алиаса, если запрос сложный с Join, то там везде надо указывать в полях алиас...
Зачем Вам номера записей из таблиц, да еще и связанных по JOIN ?! :-0
Как правило, в 99,9999% случаев без всего этого можно обойтись.... Я почему-то не уверен, что Ваша задача попадает в оставшиеся 0,0001% :-)
Опишите Вашу задачу. Возможно есть другие, более простые пути ее решения...
...
Рейтинг: 0 / 0
26.02.2009, 13:17
    #35839112
почему так
Это тяжёлый случай, поэтому описывать долго и в конечном итоге может только запутать ситуацию(выбираются записи с номерами записей во временную таблицу, потом делаются изменения и по номеру этой записи отыскивается в основной и производится изменения, почему не View, не КАД.., есть то, что есть)...поэтому для упрощения это должно выглядеть так
select t1.kod,t1.kol,,NVL(t2.naim, SPACE(20)) as naim,recno("t1") as rec_t1,recno("t2") as rec_t2 FROM t1 left JOIN t2 ON t1.kod = t2.kod
...
Рейтинг: 0 / 0
26.02.2009, 13:22
    #35839132
Kruchinin Pahan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему так
Не_проходи_мимоЭто тяжёлый случай, поэтому описывать долго и в конечном итоге может только запутать ситуацию(выбираются записи с номерами записей во временную таблицу, потом делаются изменения и по номеру этой записи отыскивается в основной и производится изменения, почему не View, не КАД.., есть то, что есть)...поэтому для упрощения это должно выглядеть так
select t1.kod,t1.kol,,NVL(t2.naim, SPACE(20)) as naim,recno("t1") as rec_t1,recno("t2") as rec_t2 FROM t1 left JOIN t2 ON t1.kod = t2.kod

Вобщем-то без промежуточных запросов данная задача не решается. Можно еще завести себе полюшко для временного суррогатного ключа на базе RECNO() в T1 и в T2.
...
Рейтинг: 0 / 0
26.02.2009, 13:35
    #35839177
почему так
Не_проходи_мимо,
Вы описали Ваш путь решения Вашей проблемы, а не саму проблему... Возможно, Ваш путь ведет к поставленной цели... Но, возможно также, что он не является единственно верным... И, возможно, альтернативные пути будут содержать меньше "подводных" камней, чем предложенный Вами...

Еще раз предлагаю Вам описать суть Вашей задачи. Если получится, то "на пальцах"... То есть, примерно так:
есть таблица №1, в ней такие-то данные;
есть таблица №2, в ней такие-то данные;
надо сделать то-то и то-то
+ приложить тестовый набор данных

Возможно, здесь одним только "чистым" SQL не обойдешься...
...
Рейтинг: 0 / 0
26.02.2009, 13:41
    #35839214
почему так
Не_проходи_мимоЭто тяжёлый случай, поэтому описывать долго и в конечном итоге может только запутать ситуацию(выбираются записи с номерами записей во временную таблицу, потом делаются изменения и по номеру этой записи отыскивается в основной и производится изменения, почему не View, не КАД.., есть то, что есть)...поэтому для упрощения это должно выглядеть так
Код: plaintext
select t1.kod,t1.kol,,NVL(t2.naim, SPACE( 20 )) as naim,recno("t1") as rec_t1,recno("t2") as rec_t2 FROM  t1 left JOIN t2 ON  t1.kod = t2.kod

Еще раз посмотрел на запрос и рекомендации Kruchinin Pahan...
Если Ваш диалект SQL поддерживает в качестве источника данных подзапросы, то можно, наверное, сделать так:
Код: plaintext
1.
2.
3.
select t11.kod,t11.kol,,NVL(t21.naim, SPACE( 20 )) as naim,t11.rec_t1,t21.rec_t2 
FROM  (select t1.*,recno() as rec_t1 from t1) t11 left JOIN (select t2.*,recno() as rec_t2 from t2) t21 
ON  t11.kod = t21.kod
...
Рейтинг: 0 / 0
26.02.2009, 14:32
    #35839446
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему так
Не_проходи_мимо(выбираются записи с номерами записей во временную таблицу, потом делаются изменения и по номеру этой записи отыскивается в основной и производится изменения,
Вот в чем проблема, и от чего нужно избавиться.
Ищите не по номеру записи а по ключевому полю- судя по вашим примерам это kod.
...
Рейтинг: 0 / 0
27.02.2009, 06:20
    #35841017
почему так
Спасибо за ответы...там изначально так заложено, что нет уникального ключа, правда есть составной, код документа+код поставщика, но это значит надо создать индекс, и когда сбрасываются записи постоянно пользоваться поиском (seek(код документа+код поставщика)), а это я думаю дольше, чем просто (go номер записи; replace kol), наверное поэтому и написали в выборке заполнение номеров записей..., поэтому скорей всего я воспользуюсь предложенным select(ом) Станислава..
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / почему так / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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