Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Distinct / 13 сообщений из 13, страница 1 из 1
25.08.2011, 12:25
    #37411384
BAHEK1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
Приветствую.
Не могу разобраться в запросе.
Есть таблица с мемо полем name
структура таблицы
id name tax

есть запрос
Код: plaintext
Select DISTINCT name from table

Но т.к. к мемо полям нельзя применять дистинкт, не пойму что делать... подскажите примером пожалуйста.
...
Рейтинг: 0 / 0
25.08.2011, 12:30
    #37411401
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
BAHEK1,

Код: plaintext
distinct left(name, 200 )
...
Рейтинг: 0 / 0
25.08.2011, 12:37
    #37411424
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
В большинстве случаев, действительно, достаточно проверить уникальность первых 50..100 символов. Если же расхождение может оказаться в символах после 255, то в общем случае можно попробовать использовать контрольные суммы, которые вычислить через SYS(2007) или SYS(2017)
...
Рейтинг: 0 / 0
25.08.2011, 13:03
    #37411517
BAHEK1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
ВладимирМВ большинстве случаев, действительно, достаточно проверить уникальность первых 50..100 символов. Если же расхождение может оказаться в символах после 255, то в общем случае можно попробовать использовать контрольные суммы, которые вычислить через SYS(2007) или SYS(2017)
В моем случае расхождение может быть в последнем слове...
...
Рейтинг: 0 / 0
25.08.2011, 13:04
    #37411521
BAHEK1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
подскажите примерчик пожалуйста с использованием SYS.
Спасибо.
...
Рейтинг: 0 / 0
25.08.2011, 13:58
    #37411692
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
* Тестовые данные
Create Cursor test (f1 i, f2 m)
Insert into test values ( 1 , Replicate('test', 100 ))
Insert into test values ( 2 , Replicate('test', 100 ))
Insert into test values ( 3 , Replicate('test', 100 ) + "3")
Insert into test values ( 4 , Replicate('test', 100 ) + "4")

* Вычисляем CheckSum по CRC16
Select Sys( 2007 , f2) as checkSum, Min(f1) as f1 from test into cursor curUnic nofilter group by  1 

* Отбираем из исходной таблицы нужные данные
Select test.* from test inner join curUnic on curUnic.f1 = test.f1
...
Рейтинг: 0 / 0
25.08.2011, 15:28
    #37411909
BAHEK1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
ВладимирМ,

Я с фокспро недавно. хотел бы уточнить "into cursor" это что он создать должен таблицу мне по селекту?
...
Рейтинг: 0 / 0
25.08.2011, 16:09
    #37412011
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
BAHEK1,

Временный набор данных. Пока не закроешь его или FoxPro будет висеть в Data Session с тем алиасом, который укажешь в CursorName.

INTO CURSOR <CursorName>
...
Рейтинг: 0 / 0
25.08.2011, 17:17
    #37412190
BAHEK1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
IgorNG,

Понятно.
Просто я делаю приложение на .net в котором использую драйвера VFPOLEDB и там такое не прокатывает=( на мой запрос такого типа он выдает мне ошибку что таблица с названием <CursorName> не существует...
...
Рейтинг: 0 / 0
25.08.2011, 17:44
    #37412262
IgorNG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
BAHEK1,

Может, не так поняли
INTO CURSOR MyCursor

Но это в Фоксе, в Нете не знаю, может там эта фраза вообще не нужна. Если в Фоксе без этой фразы, то сразу же выводит результат в окне.
...
Рейтинг: 0 / 0
25.08.2011, 18:42
    #37412349
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
BAHEK1Просто я делаю приложение на .net в котором использую драйвера VFPOLEDB и там такое не прокатывает=( на мой запрос такого типа он выдает мне ошибку что таблица с названием <CursorName> не существует...
Не уверен, что пройдет через OLEDB, но попробуй использовать подзапрос. Примерно так

Код: plaintext
Select test.* from test inner join (Select Sys( 2007 , f2) as checkSum, Min(f1) as f1 from test group by  1 ) curUnic on curUnic.f1 = test.f1
...
Рейтинг: 0 / 0
28.08.2011, 00:08
    #37414917
BAHEK1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
ВладимирМBAHEK1Просто я делаю приложение на .net в котором использую драйвера VFPOLEDB и там такое не прокатывает=( на мой запрос такого типа он выдает мне ошибку что таблица с названием <CursorName> не существует...
Не уверен, что пройдет через OLEDB, но попробуй использовать подзапрос. Примерно так

Код: plaintext
Select test.* from test inner join (Select Sys( 2007 , f2) as checkSum, Min(f1) as f1 from test group by  1 ) curUnic on curUnic.f1 = test.f1

В том то и дело я не могу создать curUnic посредством cursor. Только если явно прописать
Код: plaintext
create table as select
...
Рейтинг: 0 / 0
28.08.2011, 13:35
    #37415083
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Distinct
Где Вы видите команду создания курсора в последнем примере? Вы вообще попробовали его запустить?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Distinct / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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