|
Insert SQL
|
|||
---|---|---|---|
#18+
Есть такая конструкция: INSERT INTO (_mt) (stroka, docum) SELECT stroka, docum FROM (_vx) dist Проблема в том, что при этом Select сортирует выборку. А как сделать не повторяющуюся выборку без сортировки? Конструкции типа Scan ... Ends не предлагать. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 14:27 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamis, Ну, наверное, в _vx отсортированы ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 14:33 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamisЕсть такая конструкция: INSERT INTO (_mt) (stroka, docum) SELECT stroka, docum FROM (_vx) dist Проблема в том, что при этом Select сортирует выборку. А как сделать не повторяющуюся выборку без сортировки? Конструкции типа Scan ... Ends не предлагать. Если dist - это DISTINCT, то походу он не в том месте стоит ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 14:36 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
IgorNGglamis, Ну, наверное, в _vx отсортированы Нет. Если выполнить Select без dist на глаз видно, что dist сортирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 14:39 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamis, DISTINCT выбирает уникальные записи! Но никак не сортирует ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 14:41 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamis, [ALL | DISTINCT] Определяет выборку в результирующий набор Запроса Всех (ALL) записей (по-умолчанию); или исключая дублируюемые записи данных (DISTINCT). Опция DISTINCT может быть использована только с первой секцией SELECT. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 14:45 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
IgorNGglamis, [ALL | DISTINCT] Определяет выборку в результирующий набор Запроса Всех (ALL) записей (по-умолчанию); или исключая дублируюемые записи данных (DISTINCT). Опция DISTINCT может быть использована только с первой секцией SELECT. Попробуй сам ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 15:15 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
IgorNGglamis, DISTINCT выбирает уникальные записи! Но никак не сортируетДля получения уникальности делается неявная сортировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 16:52 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
DISTINCT сортирует. glamisКонструкции типа Scan ... Ends не предлагать. Без них никак порядок не сохранишь. Теория языка SQL считает что все записи равнозначны и их порядок в выборке неважен, если не указан явно в ORDER BY. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 17:03 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
Используй Rand() Допили вот это: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2012, 17:46 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
Не факт, что rnd() будет выдавать значения по возрастанию. Была мысль использовать recn(), но похоже гемора становится больше, чем при scan. Вернее scan тож плохо. Луче Do while !eof() insert ... values coun while ... Endd ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 09:29 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
ХЗ чего там так плохо. Цикл SCAN ... ENDSCAN тоже самое что и Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 09:52 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
Dima T, Есть разница. skip, а след-но и scan переходят на следующую запись, а конструкция Do while ... coun while пропускает несколько одинаковых. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 10:44 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamisНе факт, что rnd() будет выдавать значения по возрастанию. При чем тут значения по возрастанию? Вопрос был о неупорядоченной выборке. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 10:59 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
Rand(), rand() не спасает уже потому, что dist отрабатывает на все поля записи, таким образом КАЖДАЯ запись будет уникальна и смысл dist просто теряется. В моем случае наработка записей производится по неким правилам блочно. Поэтому неотсортированные записи лежат в заранее заданном порядке, определяемом пользователем. Именно поэтому мне и не нужна сортировка. Иначе кому какое дело в каком порядке появились записи. И тем более было бы удобнее подсобрать записи одного типа вместе. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 11:39 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamis, Дык об чем спич-то??? Старым дедовским 2.0-способом: Dima Tdo while !eof() ... skip enddo Внутри проверяешь, есть ли уже такая запись в выходной таблице... Ну и т.д. :) glamisконструкция Do while ... coun while пропускает несколько одинаковых. Это если они отсортированы, а так - не факт ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 12:07 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamisDima T, Есть разница. skip, а след-но и scan переходят на следующую запись, а конструкция Do while ... coun while пропускает несколько одинаковых. coun while пропускает одинаковых только если они идут подряд. Со сканом тоже самое можно так получить: Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 12:16 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
Dima T, такая конструкция не сработает. for просматривает всю таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 13:14 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamisDima T, такая конструкция не сработает. for просматривает всю таблицу А select из первого поста не всю? SCAN WHILE ... начинает с текущего места. Как понимаю у тебя еще куча всяких специфических моментов о которых ты промолчал. Тогда делай как тебе удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 13:44 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamisDima T, такая конструкция не сработает. for просматривает всю таблицу Такая конструкция должна быть внутри do while ... enddo Читаешь запись и сканом проверяешь ее наличие в рез.таблице, если не найдена - добавляешь ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 14:17 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
Dima TglamisDima T, такая конструкция не сработает. for просматривает всю таблицу А select из первого поста не всю? SCAN WHILE ... начинает с текущего места. Как понимаю у тебя еще куча всяких специфических моментов о которых ты промолчал. Тогда делай как тебе удобнее. Я ведь и говорил Scan не предлагать. А в SQL все по другому дет-ся Jonny540 Такая конструкция должна быть внутри do while ... enddo Читаешь запись и сканом проверяешь ее наличие в рез.таблице, если не найдена - добавляешь Ну и как вы будете определять след-ее искомое? В одной-то области, когда Scan for даст уже на первом проходе eof()? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 15:07 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamisЯ ведь и говорил Scan не предлагать. А в SQL все по другому дет-ся Я к тому что сложно что-то советовать не зная всех условий задачи. Способ решения выбирается исходя из задачи. Кроме SELECTа и SCANа еще варианты есть, и не только Do while ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 15:21 |
|
Insert SQL
|
|||
---|---|---|---|
#18+
glamisНу и как вы будете определять след-ее искомое? В одной-то области, когда Scan for даст уже на первом проходе eof()? Элементарно, после скана - go top. такая фигня уже давно работает. Хочешь код? есть варианты с locate и seek (здесь в конце set order to) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2012, 15:33 |
|
|
start [/forum/topic.php?fid=41&tid=1583715]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 165ms |
0 / 0 |