Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2015.02.15;
Скачать: [xml.tar.bz2];

Вниз

Нужны идеи.   Найти похожие ветки 

 
ухты   (2014-07-15 21:31) [80]

правильно, клиент должен быть браузер
а ежели чего то и сервер приложений доделает дело, или юзер за клиентом, выборка то не такая большая в итоге


 
Юрий Зотов ©   (2014-07-15 22:10) [81]

> эта пять   (15.07.14 19:49) [78]
> а я могу сделав селект и получив датасет снова делать селекты


Купите корову.

Kerk ©   (15.07.14 19:54) [79]
> Я наверно потерял нить обсуждения,


Потерял. Нужна была идея, а не способ ее реализации. Это уж я сам как-нибудь.

> All

Други! Поверьте, что я в достаточной степени осведомлен о преимуществах и недостатках как DOM,  так и реализации функционала на сервере или клиенте. Но в этой ветке речь идет совершенно о другом - см. [0].

Еще поверьте, что, задавая вопрос, я вычленил только то, что к нему и относится, намеренно опустив все несущественные для сабжа детали. На самом деле там и трехзвенка, и веб-морда, и XML присутствует.

Посему очень прошу придерживаться темы и не отвлекаться на проблемы типа "есть ли жизнь на Марсе". Это, безусловно, очень интересно, но здесь - не по существу.

Заранее благодарен. Особенно высказавшимся по сути.


 
ухты   (2014-07-15 22:29) [82]

так и делайте как говорите
создавайте выборки с доп. полем типа статуса, не совпали фио - A, не совпали номера - Б, ну или что там у вас .. юзеру и гоните это сгруппировано, он сам определит или условия менять или из списка выбирать
ну а если веб. у вас то как все, начал вводить первые 10 (15,20 по вкусу) ему в автокомплетед списке.. интерактив, что тут страшного


 
ухты   (2014-07-15 22:31) [83]


> ну а если веб.
а по сути все равно :)


 
Юрий Зотов ©   (2014-07-15 22:44) [84]

> ухты   (15.07.14 22:29) [82]
> создавайте выборки с доп. полем типа статуса, не совпали фио - A, не
> совпали номера - Б, ну или что там у вас .. юзеру и гоните это
> сгруппировано, он сам определит или условия менять или из списка
> выбирать


Благодарю за совет, но он снова не по сабжу. Где создать поле статуса, что, зачем и в каком виде гнать юзеру - это я расписал еще на прошлой неделе.


 
Kerk ©   (2014-07-15 22:46) [85]

Тогда я не понимаю в чем вопрос, ибо сама идея озвучена в [0], осталось только реализовать.
Ухожу-ухожу, извините :)


 
ухты   (2014-07-15 22:58) [86]


> Kerk ©   (15.07.14 22:46) [85]
согласен

идею чего надо, в чем загвоздка? :)


 
Юрий Зотов ©   (2014-07-15 23:26) [87]

Kerk ©   (15.07.14 22:46) [85]
> ухты   (15.07.14 22:58) [86]


Кто хотел понять - тот понял. См., например, [10], [11], [29], [37], [44], [66].


 
ухты   (2014-07-15 23:46) [88]

пользователя надо обламывать по мере ввода
фамилий %иванов% не миллион, а гораздо меньше, а таких сергеев/петь/... еще меньше, до паспорта можно и не дойти никогда, или его достаточно
другое дело что, по хорошему, фио + пол + дата != уникально, но так это уже не проблема запросов


 
Юрий Зотов ©   (2014-07-15 23:55) [89]

> ухты   (15.07.14 23:46) [88]

> до паспорта можно и не дойти никогда, или его достаточно
> фио + пол + дата != уникально, но так это уже не проблема запросов


Вот! Нужно лишь вдуматься в сабж. Видите - Вы вдумались и все поняли.

Кроме того, что "пользователя надо обламывать по мере ввода". В сабже о юзере - ни слова. Потому что юзер всего лишь указывает файл с данными.


 
ухты   (2014-07-16 00:04) [90]


> В сабже о юзере - ни слова.
кхм, ну так вы еще чего нибудь того -  "намеренно опустив все несущественные для сабжа детали", тогда точно идеи как рекой хлынут :)

Вот! тут и приходит тот самый контекст, которого "опустили" :)


 
ухты   (2014-07-16 00:12) [91]


> Но объясни это той девочке-операторше, которая сегодня поругалась
> с парнем и вводит номер 000123 как 123, а завтра с парнем
> помирилась и вводит номер 000123 полностью.
да и тут вот как надо было понимать, куда и зачем она что-то вводит и почему ее не считать за юзера?


 
Kerk ©   (2014-07-16 00:23) [92]

Это тривиальная задача для любой нормальной СУБД. Почти "hello world". Если б название СУБД не было "несущественной деталью", тут бы даже код давно привели бы.


 
Юрий Зотов ©   (2014-07-16 00:50) [93]

> ухты   (16.07.14 00:04) [90]
> Вот! тут и приходит тот самый контекст, которого "опустили"


И остается только удивляться - как же нашлись люди, которые сумели-таки понять сабж?

> Kerk ©   (16.07.14 00:23) [92]

> Это тривиальная задача для любой нормальной СУБД. Почти "hello world".
> Если б название СУБД не было "несущественной деталью", тут бы даже код
> давно привели бы.


Рома, это DB2. Теперь с нетерпением жду подтверждения твоих слов - то есть, твоего кода. Заранее спасибо.


 
Inovet ©   (2014-07-16 02:43) [94]

> [93] Юрий Зотов ©   (16.07.14 00:50)
> то есть, твоего кода

Ещё подспорье для написания кода - формат обмена. Это уже устаревший, они его любят каждый год новый делать, часто радикально новый, но обязательна совместимость вниз со старыми документами
http://base.consultant.ru/cons/cgi/online.cgi?req=doc;base=LAW;n=143763;dst=0;ts=A3B6768EFF0A0AB54A0BFEC97C1C00C7;r nd=0.7258964089122141


 
Германн ©   (2014-07-16 02:46) [95]


> Рома, это DB2. Теперь с нетерпением жду подтверждения твоих
> слов - то есть, твоего кода. Заранее спасибо.

Это удар ниже пояса, Юр. :)


 
Юрий Зотов ©   (2014-07-16 07:36) [96]

> Германн ©   (16.07.14 02:46) [95]

Ну, если решение "тривиальной задачи для любой нормальной СУБД. Почти "hello world" является ударом ниже пояса, то я уж и не знаю, что тогда является просто аргументом.

"Hello, world" пишется за минуту. Почти "hello world" - ну, пусть минут за 5. Полагаю, Ромина репутация стоит того, чтобы потратить на нее какие-то несчастные 5 минут.


 
Юрий Зотов ©   (2014-07-16 07:47) [97]

> Inovet ©   (16.07.14 02:43) [94]

> Ещё подспорье для написания кода - формат обмена.


Не, ну я же не садист. С форматами обмена своя чехарда, к сабжу она отношения не имеет. В сабже сказано, что вводится уже готовый документ, вот и все (и для сабжа неважно, как вводится, кем вводится, в каком виде вводится). А в документе уже есть перечисленные в сабже данные.


 
Focus   (2014-07-16 09:02) [98]

db2tomysql,
db2toaccess,
db2to....
?


 
ВладОшин ©   (2014-07-16 09:31) [99]


> неважно, как вводится, кем вводится, в каком виде вводится

имхо, важно..
Если автоматом каким по 100500 за раз - то одно, а если девочкой - то другое.
Девочка будет психовать если отклика нет

А если забубенить индексов на все, и спрашивать аля
select count(*) as ПО_ФИО from .. where фио=fio
union all
select count(*) as ПО_ДАТЕ from .. where дата=date
и т.п.

потом имеем 7 цифр для анализа

а бороться с тормозом-вставкой в проиндексированное насмерть - писать новые документы в доп. место. Потом по накоплению ~ 1000 сбрасывать  в основную фоном


 
ВладОшин ©   (2014-07-16 09:40) [100]


> select count(*) as ПО_ФИО from .. where фио=fio
> union all
> select count(*) as ПО_ДАТЕ from .. where дата=date

не, ерунда

так
count по обязательным
uniuon
count по всем

или, если поддерживает

WITH CTE (поля )
AS
( select поля  from  по обязательным)
select count from CTE
union all
select count from CTE where по НЕобязательным


 
Юрий Зотов ©   (2014-07-16 10:01) [101]

> ВладОшин ©   (16.07.14 09:31) [99]

Влад, не надо домысливать того, чего нет в сабже. Нет в нем ни девочки, ни GUI, ни 100500 документов. Сказано - вводится документ (один!), в котором такие-то поля заполнены обязательно, а такие-то необязательно. И все.

И неважно как, неважно кем/чем, неважно в каком виде этот документ вводится. И нужна была даже не реализация, а лишь идея - как различить разные случаи, не делая при этом кучу огромных выборок. А для этого даже и тип СУБД не важен, потому что куча огромных выборок - она и в любой СУБД есть куча огромных выборок. А идея, как этой кучи избежать - она и есть идея, она в любой СУБД работать будет, с отличиями лишь в деталях реализации (если эти детали еще будут, потому что не исключено, что здесь можно обойтись лишь стандартным SQL).

Вот Роман приведет код для DB2 (в чем мы, конечно же, не сомневаемся), а мы тут же попросим его привести аналогичный код для любой другой СУБД и потом спросим - а чем эти два кода отличаются в идейном плане? И тут неожиданно выяснится, что практически ничем, отличия лишь в реализации.

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


 
ВладОшин ©   (2014-07-16 10:13) [102]


> Юрий Зотов ©   (16.07.14 10:01) [101]

ok

тогда ты все сказал - выбрать обязательное, из него необязательное.
Мне только не понравились циклы.


 
Inovet ©   (2014-07-16 10:13) [103]

> [99] ВладОшин ©   (16.07.14 09:31)
> Если автоматом каким по 100500 за раз - то одно, а если
> девочкой - то другое.

Не знаю, что за участок Юра делает, но обычно приносят/передают по каналам связи в ПФ как раз по 100500 за раз готовых документов, сотрудник ПФ запускает загрузку их в базу, происходит проверка на соответсвие всекой фигни в том числи и ФИО со СНИЛС, о выдаётся протокол ошибок, которые надо исправить и ещё раз передать заново сформированные документы, снова ПОЛНЫМ пакетом - т.е. те же 100500.

Ну там при личном обращении сотрудник может заполнить самостоятельно какой-нить документ-запрос. Наверно скоро и сам застрахованный лиц через ВЕБ сможет это делать. В частности, что я видел, через Сбербанк-онлайн уже сейчас можно. Тоже ведь документ-запрос XML уйдёт из Сбербанка в ПФ, назад вернётся документ-ответ XML. Весь формат описан по ссылке выше в "Приложении 4".

Интересно узнать, что же к этой системе будет прикручено в сабже.


 
Inovet ©   (2014-07-16 10:25) [104]

> [103] Inovet ©   (16.07.14 10:13)
> что же к этой системе будет прикручено в сабже.

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


 
Юрий Зотов ©   (2014-07-16 10:41) [105]

> Inovet ©   (16.07.14 10:25)

АДВ-8 на регионе. Там пачка, но очень небольшая, ни о каких 100500 речь не идет.


 
Kerk ©   (2014-07-16 11:05) [106]

Суть:
- совпадение всех 7 полей считаем полным;
- совпадение всех 5 обязательных полей при несовпадении серии или номера паспорта  считаем неполным;
- несовпадение хотя бы одного из 5 обязательных полей считаем "не найден".


SELECT
 mandatory_field1,
 mandatory_field2,
 mandatory_field3,
 mandatory_field4,
 mandatory_field5,
 optional_field1,
 optional_field2,
 CASE
   WHEN optional_field1 = ? and optional_field2 = ? THEN "FULL"
   ELSE "PARTIAL"
 END
 AS TYPE
FROM TABLE
WHERE mandatory_field1 = ?
 AND mandatory_field2 = ?
 AND mandatory_field3 = ?
 AND mandatory_field4 = ?
 AND mandatory_field5 = ?

Что в итоге имеем? В поле TYPE будет строка "FULL" для полных совпадений или строка "PARTIAL", если совпадают хотя бы обязательные поля. Сортировки и дополнительные условия можно добавить по вкусу.

2 минуты на написание и 3 минуты на гугл (ради оператора CASE), ибо непосредственно с DB2 я почти не пересекался. Стоило все это 6 страниц обсуждать?

Можно, кстати, с другой стороны подойти. Считать все поля необязательными и отсортировать выборку по количеству совпадающих полей, отбросив те, у которых это значение ниже определенного порога. Или даже можно совместить обе этих идеи. Но это я уже оставляю в качестве домашнего задания.


 
Пит   (2014-07-16 11:11) [107]


> ради оператора CASE

так case в большинстве БД есть, и в оракле тоже


 
Kerk ©   (2014-07-16 11:13) [108]


> Пит   (16.07.14 11:11) [107]

Ну естественно в большинстве, я ж сразу сказал, что в любой нормальной СУБД это делается легко. Но я же не помню конкретный синтаксис. Вообще, я оператор IF искал, но как я понял, его в DB2 нету, только CASE. В результате одно и то же, но тем не менее нюанс.


 
Kerk ©   (2014-07-16 11:15) [109]

К моему большому сожалению, я уже скоро год как не работаю с БД, так что многое уже уходит из памяти, да.


 
Inovet ©   (2014-07-16 11:33) [110]

> [105] Юрий Зотов ©   (16.07.14 10:41)
> АДВ-8

Мда. Так более понятно. Ну т.е. сотрудник ЗАГСа заполняет документы по своим данным, которые уж более актуальны должны быть в ЗАГСе тем более для АДВ-8, но СНИЛСа сотрудник не знает. В ПФ они могут отличаться, как я говорил уже. А юридически можно ли сотруднику ЗАГСа выдавать список подходящих лиц в случае неполного совпадения или более одного полного совпадения? От этого зависит и подход. Например, можно при наличии документа удостоверяющего личность и несовпадении ФИО, выдавать ФИО по документу из базы, так делается по СНИЛСу при проверке. А вот без документа УЛ список может получаться довольно большим, это если учитывать расхождения в 1-2 буквах. Если расхождения не уччитывать, то "не найден", "найдено столько-то записей" выдать их, и по этим случаям уже искать вручную другими путями.

Всё к тому, что реальность далека от идеала. Например сотрудник ПФ иногда идёт на встречу и смотрит в базе СНИЛС по паспортным данным при телефонном разговоре, когда особо одарённые сотрудники отдела кадров умудряются принять человека, а СНИЛС забывают взять, а человек отработал 3 дня и пропал. Ещё хуже когда такой человек отработал 3 дня по договору, а живёт в другом регионе, тогда неофициально узнать не получится, потому что на местах только кусок базы. Вбить левый СНИЛСс сдать, потом после локальной приёмки по региональной базе через месяц другой придёт ошибка из общей базы, тогда и исправлять уже.


 
Inovet ©   (2014-07-16 11:35) [111]

Да чё вы про эти БД, тут других проблем полно будет, вон выше часть описал. А БД фигня, что там сложного.


 
Kerk ©   (2014-07-16 11:39) [112]


> Inovet ©   (16.07.14 11:35) [111]
>
> Да чё вы про эти БД, тут других проблем полно будет, вон выше часть описал.

В том, что ты выше описал, заключается реальная постановка задачи. Но реальную постановку задачи нам тут никто не сообщил. Так что решаем ровно то, что озвучено.

> А БД фигня, что там сложного.

Ну я-то вижу, да. Тут уже и циклы по датасетам, и DOM, и XPath. Все наприменяли кто что знал.


 
Пит   (2014-07-16 11:50) [113]


> К моему большому сожалению, я уже скоро год как не работаю
> с БД

ты ж вроде разрабатывал какую то фишку для БД


 
Kerk ©   (2014-07-16 11:56) [114]


> Пит   (16.07.14 11:50) [113]

Было такое да. Но с конца прошлого года я работаю, скажем так, в сфере автоматизации торговли на форексе. Тут интересно - большие нагрузки, много данных, но по БД я все-таки немного скучаю :) БД тут конечно тоже есть где-то глубоко внутри, но мои задачи с ней не пересекаются.


 
имя   (2014-07-16 12:50) [115]

Удалено модератором


 
Пит   (2014-07-16 13:17) [116]


> Было такое да.

а чего ушел? Ты вроде в восторге был, что крутые задачи и общение с мега специалистами.


 
junglecat   (2014-07-16 13:19) [117]

> [114] Kerk ©   (16.07.14 11:56)

Надо же, у меня сейчас тоже подобный проект. Надеюсь, не слишком надолго)


 
Kerk ©   (2014-07-16 13:32) [118]


> Пит   (16.07.14 13:17) [116]

Там было очень хорошо, я до сих пор немного ностальгирую и поддерживаю контакты с некоторыми людьми. Но к сожалению не всегда все зависит от нас. Так получилось, что по каким-то внутриполитическим причинам Dell решил закрыть весь отдел занимавшийся базами данных в питерском офисе. В финансовом плане они нас не обидели, выплатив всем достаточно щедрое выходное пособие, но чисто по-человечески мне все равно жаль. Так что мне ничего не оставалось, как собрать вещи и искать другую работу. Такие дела :)


> junglecat   (16.07.14 13:19) [117]
>
> > [114] Kerk ©   (16.07.14 11:56)
>
> Надо же, у меня сейчас тоже подобный проект. Надеюсь, не
> слишком надолго)

Ну да. С одной стороны я тут делаю многие вещи, которые раньше не особо приходилось делать. Очень пригодился курсэровский курс по алгоритмам. В "мирное время" наверно немного скучнее, но сейчас  тут такая ситуация, что нужно серьезно оптимизировать существующий код и по памяти, и по скорости. Но с другой стороны - не вижу себя работающим здесь через 10 лет.


 
Юрий Зотов ©   (2014-07-16 13:43) [119]

> Kerk ©   (16.07.14 11:05) [106]

1. Код кривой - нет варианта "не найден".
2. Зачем включать в выборку обязательные поля, если они же задаются в параметрах?
3. Ты использовал уже готовое решение [44], а не сабж.
4. И ты сам подтвердил, что суть сабжа вовсе не конккретной СУБД.


 
Kerk ©   (2014-07-16 13:57) [120]


>  Юрий Зотов ©   (16.07.14 13:43) [119]
> 1. Код кривой - нет варианта "не найден".

Пустой ответ - это вариант "не найден".

> 2. Зачем включать в выборку обязательные поля, если они
> же задаются в параметрах?

Ну так не включай. Прояви фантазию, не нужно с форума код копипастить бездумно.

> 3. Ты использовал уже готовое решение [44], а не сабж.

Нет, я использовал не решение [44], а постановку задачи из [44]. Решение там крайне кривое.

> 4. И ты сам подтвердил, что суть сабжа вовсе не конккретной СУБД.

Я об этом сказал еще в [92]. Задача решается в практически любой СУБД элементарно. Но так как ты выпрашиваешь код, то без названия конкретной СУБД код написать нельзя.

---

На самом деле тут все просто. Будем считать, что "полное совпадение" - это просто совпадение всех полей. ОК. Тогда вся задача сводится к одному вопросу: а что считать "неполным совпадением"? Или перефразируя: а чем "неполное совпадение" отличается от "несовпадения"? Но не зная всех маленьких нюансов постановки задачи, на этот вопрос ответить не сможет никто. Телепаты в отпуске.

Поэтому вместо разговора по сути мы тут имеем яростную самодемонстрацию "несколько другого уровня" автора.

Я ведь даже проявил фантазию и телепатически предположил в [106] еще один вариант решения. Но автор не ценит труд отвечающих почему-то.



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2015.02.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.71 MB
Время: 0.017 c
2-1389285810
SKIPtr
2014-01-09 20:43
2015.02.15
узнать об изминении значения RadioButton


15-1405114611
alexdn
2014-07-12 01:36
2015.02.15
Перевод программы


15-1405116396
Edgar_Wine
2014-07-12 02:06
2015.02.15
Вероятность что при бросании двух костей выпадет хоть одна 6


15-1404595805
Юрий
2014-07-06 01:30
2015.02.15
С днем рождения ! 6 июля 2014 воскресенье


2-1389616067
Alex_C
2014-01-13 16:27
2015.02.15
Контертировать string[10] в XE2





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский