powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Поиск дублей
28 сообщений из 28, показаны все 2 страниц
Поиск дублей
    #34856308
songv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может ли кто-нибудь привести пример запроса (или кусок программки на КАШЕ) для такй цели:
Есть база данных. Людей. Нужно по сочетанию в полей (например фамилия, имя, отчество, дата рождения) найти дубля в базе данных.
Как это запрос будет выгдядеть на языке каше?
...
Рейтинг: 0 / 0
Поиск дублей
    #34856351
NoGot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структуру таблицы (включая индексы) в студию
...
Рейтинг: 0 / 0
Поиск дублей
    #34856499
songv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
любые. Например
fam c (40)
im c(25)
ot c(30)
d_rogd (date)

Как будет выглядеть запрос на языке КАШЕ
...
Рейтинг: 0 / 0
Поиск дублей
    #34856537
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так нужен SQL запрос? Или COS код?
Запрос ничем не отличится от запроса MS SQL...
А для COS нужно знать как это все хранится... Есть и индексы и как они организованы...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Поиск дублей
    #34856606
songv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если такой вопрос возникает в сУБД fOXPRO - то любой вам на него ответит. Либо, используя SQL -запрос, либо приведя пример программки.
Почему программисты КАШЕ на могут привести пример, пусть собственный?
Так сложный язык?
Чтобы создать базу данных с 10-тью записями, сознательно внести несколько полностью повторяющихся записей и потом найти эти дубли - в fOXPRO нет ничего сложного.
Как в КАШЕ?
...
Рейтинг: 0 / 0
Поиск дублей
    #34856699
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
непонятно, чего вы хотите

SQL:
select fam,name,otch,dr from user.people group by fam,name,otch,dr having count(*)>1

На косе несколько иначе, нужно смотреть структуру индексов

При чем тут каше?
Вопрос появления дублей - если это не нужно специально - вопрос неправильного проектирования базы данных, а не языка програмирования.

>Почему программисты КАШЕ на могут привести пример, пусть собственный?
Вы пытаетесь спровоцировать какую-то реакцию?
Почему вы считаете всех ОБЯЗАННЫМИ себе приводить примеры. Мы не служба поддержки InterSystems.
Если ваш вопрос покажется нам интересным,мы ответим. Нет - извиняйте.
Не факт, что многие люди захотят тратить свое время на ваше обучение.
...
Рейтинг: 0 / 0
Поиск дублей
    #34856721
NoGot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соглашусь, в COS'e, все зависит от наличия индексов, от их вида и т.д. поэтому приводите конкретный пример, если хотите услышать конкретный ответ. А если интересует "например", "вида", "типа" - читайте теорию...
...
Рейтинг: 0 / 0
Поиск дублей
    #34856722
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Со свойством d_rogd будут проблемы - заменил на dtr .
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
PRIMER
 n o,sql,ok
 s o=##class(%ResultSet).%New("%DynamicQuery:SQL")
 s sql="select fam,name,otch,dr from user.people group by fam,name,otch,dr having count(*)>1"
 s ok=o.Prepare(sql)
 s ok=o.Execute(Id)
 while o.Next() {
    w o.Get("fam")," ",o.Get("im")," ",o.Get("ot")," ",o.Get(dtr")
 }
 d o.Close()
 q
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Поиск дублей
    #34856729
Игорь Сойников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что в Foxe все храниться в таблице.
а в Cache это может быть структура тип ^People(fam,im,otch)=datr
поэтому решение на COS будет различным
например для указанной выше структуры
решение есть ли однофамильцы может выглядеть так
S fl=0,im=$o(^People(fam,"")) I $o(^Peolpe(fam,im))'="" S fl=1 ;есть однофамильцы
...
Рейтинг: 0 / 0
Поиск дублей
    #34856735
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
songvесли такой вопрос возникает в сУБД fOXPRO - то любой вам на него ответит.
так там кроме таблиц ничего и нет
songvПочему программисты КАШЕ на могут привести пример, пусть собственный?
Потому что каждый может организовать хранение данных как ему нравится... Плюс индексы... От того и вариантов куча.
...
Рейтинг: 0 / 0
Поиск дублей
    #34856749
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Сойников , в примере вашего хранения и дублей-то небудет Просто будет записано последняя введеная дата рождения...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Поиск дублей
    #34856772
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
songv , т.ч. вы сначала определитесь с хранением данных и индексами и свой вопрос постройте в таком духе:
- У меня есть вот такое-то хранение данных... Есть индексы, построенные вот так-то... Как мне найти дубли?

Ну или типа того...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Поиск дублей
    #34856833
Игорь Сойников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я писал про однофамильцев
а дубль проверяем
S fl=0 i $D(^People(fam,im,otch))#2,^(otch)=dtr s fl=1
...
Рейтинг: 0 / 0
Поиск дублей
    #34856844
songv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kkrsva - спасибо
...
Рейтинг: 0 / 0
Поиск дублей
    #34856928
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Сойников , при таком хранении
Код: plaintext
s ^People(fam,im,otch)=datr
Дублей в БД небудет вообще.
Вот если заменить на
Код: plaintext
s ^People(fam,im,otch,ID)=datr
Тогда дубли будут. Хотя дурацкое хранение на мой взгляд!
Изменюка я его на
Код: plaintext
1.
2.
3.
s ^Dat(ID,"fam")="Иванов"
s ^Dat(ID,"im")="Иван"
s ^Dat(ID,"otch")="Иванович"
s ^Dat(ID,"datr")="01.02.1980"
Добавим идекс типа вот такого
Код: plaintext
1.
s key=$lb(fam,im,otch,datr)
s ^ind(key,ID)=""
Тогда поиск дублей может выглядеть вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
PRIMER
 n
 s key=$o(^ind(""))
 where key'="" {
    s id=$o(^ind(key,""))
    if id'=$o(^ind(key,""),- 1 ) {
       w $g(^Dat(ID,"fam"))," ",$g(^Dat(ID,"im"))," ",$g(^Dat(ID,"otch"))," ",$g(^Dat(ID,"datr"))
    }
    s key=$o(^ind(key))
 }
 q
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Поиск дублей
    #34856982
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>s ^People(fam,im,otch)=datr
Все поля по сути дела IDKEY.
Апдейты замучаетесь делать. Или все на голом косе?

Проще сделать обычную таблицу и индекс на нужные поля. Возможно, поставить требование уникальности.
Если хочется работать на COS, то проще это делать с индексами.
...
Рейтинг: 0 / 0
Поиск дублей
    #34856997
NoGot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чето намудрили вы с хранением. Я так понимаю человеку необходимо будет организовать поиск по сочетанию фио и даты рождения. Так можно создать обычный класс со свойствами и завести индекс по (фамилия,имя, отчество, датарожд) и все...
...
Рейтинг: 0 / 0
Поиск дублей
    #34857005
NoGot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока писал, мысль мою высказали уже
...
Рейтинг: 0 / 0
Поиск дублей
    #34857024
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так про то и речь! Вариантов куча. Для решения любой Кащейской проблемы нужно больше конкретики
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Поиск дублей
    #34857801
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaДобавим идекс типа вот такого
Код: plaintext
1.
s key=$lb(fam,im,otch,datr)
s ^ind(key,ID)=""

Не стоит использовать строки полученные от $lb в качестве индекса. )))
...
Рейтинг: 0 / 0
Поиск дублей
    #34858843
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Так про то и речь! Вариантов куча.

И это часто будет приводить к тому, что в креативе будет ломать ноги не только посторонний, но и сам автор :-(
...
Рейтинг: 0 / 0
Поиск дублей
    #34858907
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну яНе стоит использовать строки полученные от $lb в качестве индекса. )))
Почему? IS утверждает что сортировка сохраняется...
...
Рейтинг: 0 / 0
Поиск дублей
    #34858910
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.И это часто будет приводить к тому, что в креативе будет ломать ноги не только посторонний, но и сам автор :-(
Посколько в MSM и классов-то небыло все придумывали что-то свое и ничего. На костылях я еще никого не видел
Даже сейчас с классами многие норовят так замутить!... Вот этого я уже не понимаю...
...
Рейтинг: 0 / 0
Поиск дублей
    #34859224
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Классы это здорово.
Только работать с ними в некоторых случаях нельзя, потому что силишком теряем в производительности на операциях массовой обработки.

Но даже в этом случае классы облегчают жизнь - облегчается документирование, появляется поддержка SQL.
...
Рейтинг: 0 / 0
Поиск дублей
    #34859249
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa ну яНе стоит использовать строки полученные от $lb в качестве индекса. )))
Почему? IS утверждает что сортировка сохраняется...
Потому.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
USER>s a($lb( 123 ))= 123 
 
USER>s a($lb("123"))= 456 
 
USER>w
 
a("{")= 123 
a("123")= 456 
USER>
Кстати, кто именно из IS утверждал?
...
Рейтинг: 0 / 0
Поиск дублей
    #34859411
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну яКстати, кто именно из IS утверждал?
Я на таком не концентрировался
...
Рейтинг: 0 / 0
Поиск дублей
    #34859524
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет списков в индексах был отдельный вопрос в этом формуе и автор пришел к выводу, что так сделать нельзя. Там были и примеры, почему нельзя.
...
Рейтинг: 0 / 0
Поиск дублей
    #34859958
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне уже один пример показали
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Поиск дублей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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