powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Insert SQL
23 сообщений из 23, страница 1 из 1
Insert SQL
    #37759112
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая конструкция:

INSERT INTO (_mt) (stroka, docum) SELECT stroka, docum FROM (_vx) dist

Проблема в том, что при этом Select сортирует выборку. А как сделать не повторяющуюся выборку без сортировки?

Конструкции типа Scan ... Ends не предлагать.
...
Рейтинг: 0 / 0
Insert SQL
    #37759133
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis,

Ну, наверное, в _vx отсортированы
...
Рейтинг: 0 / 0
Insert SQL
    #37759141
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisЕсть такая конструкция:

INSERT INTO (_mt) (stroka, docum) SELECT stroka, docum FROM (_vx) dist
Проблема в том, что при этом Select сортирует выборку. А как сделать не повторяющуюся выборку без сортировки?

Конструкции типа Scan ... Ends не предлагать.

Если dist - это DISTINCT, то походу он не в том месте стоит
...
Рейтинг: 0 / 0
Insert SQL
    #37759151
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGglamis,

Ну, наверное, в _vx отсортированы

Нет. Если выполнить Select без dist на глаз видно, что dist сортирует.
...
Рейтинг: 0 / 0
Insert SQL
    #37759158
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis,

DISTINCT выбирает уникальные записи! Но никак не сортирует
...
Рейтинг: 0 / 0
Insert SQL
    #37759167
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis,

[ALL | DISTINCT]
Определяет выборку в результирующий набор Запроса Всех (ALL) записей (по-умолчанию); или исключая дублируюемые записи данных (DISTINCT). Опция DISTINCT может быть использована только с первой секцией SELECT.
...
Рейтинг: 0 / 0
Insert SQL
    #37759224
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGglamis,

[ALL | DISTINCT]
Определяет выборку в результирующий набор Запроса Всех (ALL) записей (по-умолчанию); или исключая дублируюемые записи данных (DISTINCT). Опция DISTINCT может быть использована только с первой секцией SELECT.

Попробуй сам
...
Рейтинг: 0 / 0
Insert SQL
    #37759464
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNGglamis,

DISTINCT выбирает уникальные записи! Но никак не сортируетДля получения уникальности делается неявная сортировка.
...
Рейтинг: 0 / 0
Insert SQL
    #37759494
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DISTINCT сортирует.
glamisКонструкции типа Scan ... Ends не предлагать.
Без них никак порядок не сохранишь. Теория языка SQL считает что все записи равнозначны и их порядок в выборке неважен, если не указан явно в ORDER BY.
...
Рейтинг: 0 / 0
Insert SQL
    #37759637
Rand()
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используй Rand()
Допили вот это:
Код: sql
1.
INSERT INTO Cur1 (INN) SELECT inn FROM (Select Distinct inn,RAND() as R FROM a_tbl) T order by R
...
Рейтинг: 0 / 0
Insert SQL
    #37760413
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не факт, что rnd() будет выдавать значения по возрастанию. Была мысль использовать recn(), но похоже гемора становится больше, чем при scan. Вернее scan тож плохо. Луче
Do while !eof()
insert ... values
coun while ...
Endd
...
Рейтинг: 0 / 0
Insert SQL
    #37760463
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХЗ чего там так плохо. Цикл SCAN ... ENDSCAN тоже самое что и
Код: sql
1.
2.
3.
4.
do while !eof()
...
   skip
enddo
...
Рейтинг: 0 / 0
Insert SQL
    #37760554
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Есть разница. skip, а след-но и scan переходят на следующую запись, а конструкция Do while ... coun while пропускает несколько одинаковых.
...
Рейтинг: 0 / 0
Insert SQL
    #37760592
Rand()
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
glamisНе факт, что rnd() будет выдавать значения по возрастанию.
При чем тут значения по возрастанию? Вопрос был о неупорядоченной выборке.
...
Рейтинг: 0 / 0
Insert SQL
    #37760667
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rand(),

rand() не спасает уже потому, что dist отрабатывает на все поля записи, таким образом КАЖДАЯ запись будет уникальна и смысл dist просто теряется.

В моем случае наработка записей производится по неким правилам блочно. Поэтому неотсортированные записи лежат в заранее заданном порядке, определяемом пользователем. Именно поэтому мне и не нужна сортировка. Иначе кому какое дело в каком порядке появились записи. И тем более было бы удобнее подсобрать записи одного типа вместе.
...
Рейтинг: 0 / 0
Insert SQL
    #37760735
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamis,

Дык об чем спич-то??? Старым дедовским 2.0-способом:
Dima Tdo while !eof()
...
skip
enddo


Внутри проверяешь, есть ли уже такая запись в выходной таблице...
Ну и т.д. :)
glamisконструкция Do while ... coun while пропускает несколько одинаковых.
Это если они отсортированы, а так - не факт
...
Рейтинг: 0 / 0
Insert SQL
    #37760748
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisDima T,

Есть разница. skip, а след-но и scan переходят на следующую запись, а конструкция Do while ... coun while пропускает несколько одинаковых.
coun while пропускает одинаковых только если они идут подряд.
Со сканом тоже самое можно так получить:
Код: sql
1.
2.
3.
4.
5.
lcRow = '!x!x!'
scan for lcRow != stroka + docum
    insert ....
    lcRow = stroka + docum
endscan
...
Рейтинг: 0 / 0
Insert SQL
    #37760860
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

такая конструкция не сработает. for просматривает всю таблицу
...
Рейтинг: 0 / 0
Insert SQL
    #37760940
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisDima T,

такая конструкция не сработает. for просматривает всю таблицу
А select из первого поста не всю? SCAN WHILE ... начинает с текущего места.
Как понимаю у тебя еще куча всяких специфических моментов о которых ты промолчал. Тогда делай как тебе удобнее.
...
Рейтинг: 0 / 0
Insert SQL
    #37761025
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisDima T,
такая конструкция не сработает. for просматривает всю таблицу
Такая конструкция должна быть внутри do while ... enddo
Читаешь запись и сканом проверяешь ее наличие в рез.таблице,
если не найдена - добавляешь
...
Рейтинг: 0 / 0
Insert SQL
    #37761175
glamis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TglamisDima T,

такая конструкция не сработает. for просматривает всю таблицу
А select из первого поста не всю? SCAN WHILE ... начинает с текущего места.
Как понимаю у тебя еще куча всяких специфических моментов о которых ты промолчал. Тогда делай как тебе удобнее.

Я ведь и говорил Scan не предлагать. А в SQL все по другому дет-ся

Jonny540 Такая конструкция должна быть внутри do while ... enddo
Читаешь запись и сканом проверяешь ее наличие в рез.таблице,
если не найдена - добавляешь
Ну и как вы будете определять след-ее искомое? В одной-то области, когда Scan for даст уже на первом проходе eof()?
...
Рейтинг: 0 / 0
Insert SQL
    #37761224
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisЯ ведь и говорил Scan не предлагать. А в SQL все по другому дет-ся
Я к тому что сложно что-то советовать не зная всех условий задачи. Способ решения выбирается исходя из задачи.
Кроме SELECTа и SCANа еще варианты есть, и не только Do while
...
Рейтинг: 0 / 0
Insert SQL
    #37761275
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
glamisНу и как вы будете определять след-ее искомое? В одной-то области, когда Scan for даст уже на первом проходе eof()?
Элементарно, после скана - go top. такая фигня уже давно работает. Хочешь код?
есть варианты с locate и seek (здесь в конце set order to)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Insert SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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