powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / уникальность данных без SQL
21 сообщений из 21, страница 1 из 1
уникальность данных без SQL
    #33058685
VanGuard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите, пожалуйста.
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33058687
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточните, пожалуйста вопрос - я так ничего не понял...
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33058689
VanGuard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как подсчитать уникальное количество полей. Есть таблица поля: cod, date, Num_Document. Повторяются значения date. Вопросик: как посчитать количество строк для cod. Заранее благодарю.
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33058749
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И опять неясно.
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33058837
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос действительно непонятен. Может, индекс UNIQUE на поле date?
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33058912
Фотография urmas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Если Вам нужно пересчитать количество записей по полю date (т.е. все записи вообще)
select count(date) from tablename

2. Если неповторящиеся значения по полю date

select count(date) distinct from tablename

Не забудьте при этом присвоить получаемые значения
либо через
set @datecount = одна из вышестоящих выборок
либо через
одна из стоящих выборок into cursor (или table) cursorname (или tablename)
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33059157
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
create cursor test (testID I)
insert into test (testID) values ( 1 )
insert into test (testID) values ( 1 )
insert into test (testID) values ( 2 )
insert into test (testID) values ( 2 )

select count(*), count(distinct testID) from test
В MS SQL синтаксис собственно запроса абсолютно такой же.
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33059918
VanGuard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу прощения за неточную постановку вопроса, я новичок как в програмировании, так и на форумах. Нужно посчитать количество записей для каждого кода (поле cod), но чтобы повторяющиеся записи были исключены, ну что-то типа select distinct COD, date from table1 group by cod, date into cursor curtable -> select curtable -> count for (cod = 1) to colcod, если возможно это сделать опираясь на индексы таблицы table1 (в таблице около 9млн. записей)
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33059991
VanGuard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urmas1. Если Вам нужно пересчитать количество записей по полю date (т.е. все записи вообще)
select count(date) from tablename

2. Если неповторящиеся значения по полю date

select count(date) distinct from tablename

Не забудьте при этом присвоить получаемые значения
либо через
set @datecount = одна из вышестоящих выборок
либо через
одна из стоящих выборок into cursor (или table) cursorname (или tablename) Такую конструкцию, into cursor, я примерно понимаю, но с использованием SQL работает очень долго (записей около 9млн.), а если создать таблицу COPY TO curTable FIELDS cod, date работает быстрее, но от этого количество записей меньше не становиться, вот если бы исключить повторения в поле date, было бы то что надо
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33060213
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, так прямо и считай:

Код: plaintext
SELECT cod, COUNT(DISTINCT date), COUNT(*) FROM table1 GROUP BY cod

В результате получишь количество уникальных значений поля Date в пределах каждого значения поля COD

Для сравнения, посмотри содержимое 3 столбца, то что возвращает COUNT(*) - это вообще общее количество записей для каждого значения поля COD

Если нужно что-то другое, то напиши код, как ты это рассчитываешь. Со словами у тебя как-то не очень получается
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33060351
VanGuard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо ВладимирМ, работает (не знал про сочетание count(distinct)). А если возможность сделать это без SQL, может даш ссылочку, что почитать. Ещё раз большое спасибо.
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33060423
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanGuardвозможность сделать это без SQL
Зачем? Быстрее не будет однозначно!
Тебе же не хочется морочить себе голову ненужными индексами и кучей COUNT'ов в каком-нибудь цикле? Тем более, что сразу можешь получить красивую табличку, а не набор переменных...
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33060480
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без SQL будет примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
******
* create 
******
CREATE TABLE TEST.DBF (COD N( 16 ), DATE D)
INSERT INTO TEST (COD, DATE ) VALUES ( 3 ,DATE())
INSERT INTO TEST (COD, DATE ) VALUES ( 1 ,DATE())
INSERT INTO TEST (COD, DATE ) VALUES ( 1 ,DATE())
INSERT INTO TEST (COD, DATE ) VALUES ( 2 ,DATE()- 1 )
INSERT INTO TEST (COD, DATE ) VALUES ( 2 ,DATE())
INSERT INTO TEST (COD, DATE ) VALUES ( 3 ,DATE())
INSERT INTO TEST (COD, DATE ) VALUES ( 3 ,DATE()- 1 )
CLOSE TABLES 
******
* now example
******
USE TEST 
SET  OPTIMIZE  OFF
INDEX ON STR(COD, 16 )+DTOC(DATE) TO AAA UNIQUE  COMPACT 
SET INDEX TO AAA
SORT ON COD TO BBB
CREATE TABLE AAA.DBF (COD N( 16 ),COUNTER N( 16 ))
SELECT AAA
APPEND FROM BBB
REPLACE ALL COUNTER WITH  1 
TOTAL TO REZULT ON COD FIELDS COUNTER  
USE REZULT
BROWSE
SET OPTIMIZE  ON
******
* clean after experiment
******
CLOSE DATABASES 
DELETE FILE TEST.DBF 
DELETE FILE REZULT.DBF 
DELETE FILE AAA.DBF
DELETE FILE AAA.IDX
DELETE FILE BBB.DBF
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33060736
VanGuard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем ответил, надеюсь правильно понял про INDEX ... UNIQUE
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33061121
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi VanGuard!

INDEX ... UNIQUE это своеобразный фильтр - если есть повторяющиеся значения ключа, то он "скрывает" всё кроме первого. Для твоей задачи подойдёт, хотя через SQL проще, красивее и быстрее (особенно если есть индексы по коду и дате).

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33061190
VanGuard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
..... , хотя через SQL проще, красивее и быстрее (особенно если есть индексы по коду и дате).

Posted via ActualForum NNTP Server 1.1 Спасибо за ответ, но может подскажете, а как в запросе использовать индекс *.CDX, тэг по коду и дате есть, (или чтоб много не писать дадите ссылочку), а может надо перед перед SQL открыть таблицу по этому тэгу. (Не дайте помереть неучем).
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33061578
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanGuardкак в запросе использовать индекс *.CDX
Достаточно того, что он существует! Остальное - не Ваша проблема! ;-)
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33061700
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Redrik VanGuardкак в запросе использовать индекс *.CDX
Достаточно того, что он существует! Остальное - не Ваша проблема! ;-)Крохотное уточнение. Сами открываются вместе с таблицей только структурные индексы (те, у которых * = имени таблицы, которые лежат рядом с таблицей и когда в таблице установлен флаг, что она имеет структурный индекс). В общем случае, *.cdx может быть и неструктурным индексом, тогда его потребуется открыть отдельно. Я не буду сейчас вдаваться в кучу других проблем неструктурных индексов, в частности, связанных с ситуацией, когда таблицу открыли, индекс забыли, запись добавили, потом индекс открыли - а он уже не соответствует табличке, т.е. битый. Но мы же с вами правильные, мы же используем индексы только структурные, не так ли? ;-)))
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33063638
VanGuard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять моя ошибка в вопросе, я не указал, что индекс неструктурный. Исправить ситуацию не могу, надеюсь что игнорировать не будете, если скажу, что я не программист, а только оператор БД, но по какой-то причине у нас нет поддержки разработчиков, хотя было в начале всё ОК, вот жизнь и заставила, хотя я не сильно упирался, заниматься выборками из таблиц и задавать Вам эти глупые вопросы. И считаю, что тема "Уникальность данных без SQL" для меня закрыта, т.к. своими вопросами могу запутать кого угодно, а в ответах могу утонуть. Буду пока читать книгу М.Базияна, а вдруг поможет. Спасибо всем за внимание, а особенно за советы и любые объяснения.
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33065646
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi VanGuard!

Использовать зачем? Чтобы он "фильтровал" дубли? AFAIK это невозможно в принципе. Только старые XBase команды (SCAN, SKIP, REPLACE...) и только при "активности" данного индекса (тега) будут "фильтровать" дубли.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
уникальность данных без SQL
    #33065660
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi VanGuard!

Перечитал ещё раз вопрос и подумал - ты новерное имел в виду как "ускорить" работу SQL варианта с использованием неструктурных тегов простых индесов - т.е. НЕ UNIQUE? Тогда достаточно их просто создать (если не было) или подключить (но тогда нужно быть на 100% уверенным что они актуальны! Т.е. что никто не менял данные НЕ подключив предварительно эти индексные файлы).
Подключаются cdx по SET INDEX TO ... ADDITIVE ( ADDITIVE нужно если есть другие неструктурные индексы - если же он один, то без разницы - структурный никогда не отключается).
Создаются как и всегда по INDEX ON ...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / уникальность данных без SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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