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

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

Далеко не факт, что Select-SQL "выдаст" таблице Х алиас "Х"... Особенно, если такая таблица уже открыта в Фоксе...
...
Рейтинг: 0 / 0
почему так
    #35838987
Но тогда, как мне сделать запрос(группировка отсутствует), чтоб при выборке показывались номера записей указанного алиаса, если запрос сложный с Join, то там везде надо указывать в полях алиас...
...
Рейтинг: 0 / 0
почему так
    #35839018
Не_проходи_мимоНо тогда, как мне сделать запрос(группировка отсутствует), чтоб при выборке показывались номера записей указанного алиаса, если запрос сложный с Join, то там везде надо указывать в полях алиас...
Зачем Вам номера записей из таблиц, да еще и связанных по JOIN ?! :-0
Как правило, в 99,9999% случаев без всего этого можно обойтись.... Я почему-то не уверен, что Ваша задача попадает в оставшиеся 0,0001% :-)
Опишите Вашу задачу. Возможно есть другие, более простые пути ее решения...
...
Рейтинг: 0 / 0
почему так
    #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
почему так
    #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
почему так
    #35839177
Не_проходи_мимо,
Вы описали Ваш путь решения Вашей проблемы, а не саму проблему... Возможно, Ваш путь ведет к поставленной цели... Но, возможно также, что он не является единственно верным... И, возможно, альтернативные пути будут содержать меньше "подводных" камней, чем предложенный Вами...

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

Возможно, здесь одним только "чистым" SQL не обойдешься...
...
Рейтинг: 0 / 0
почему так
    #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
почему так
    #35839446
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не_проходи_мимо(выбираются записи с номерами записей во временную таблицу, потом делаются изменения и по номеру этой записи отыскивается в основной и производится изменения,
Вот в чем проблема, и от чего нужно избавиться.
Ищите не по номеру записи а по ключевому полю- судя по вашим примерам это kod.
...
Рейтинг: 0 / 0
почему так
    #35841017
Спасибо за ответы...там изначально так заложено, что нет уникального ключа, правда есть составной, код документа+код поставщика, но это значит надо создать индекс, и когда сбрасываются записи постоянно пользоваться поиском (seek(код документа+код поставщика)), а это я думаю дольше, чем просто (go номер записи; replace kol), наверное поэтому и написали в выборке заполнение номеров записей..., поэтому скорей всего я воспользуюсь предложенным select(ом) Станислава..
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / почему так
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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