Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2012, 03:49   #1
dr03
Форумчанин
 
Регистрация: 08.04.2011
Сообщений: 119
По умолчанию и снова запрос!

Доброго здоровья дорогие форумчане-программисты!
Помогите справиться с запросом.
Около месяца ломаю голову над реализацией мудрёного запроса.
задумка такая:из таблицы поля "2" запросом отсортированы запсиси, в поле"1" есть некая запись(предположим а,п,л,д,ж), и для этого поля необходимо составить запрос, который бы искал отличие.
Теперь предметнее сделан запрос на оперделённое заболевание.Для этого типа заболевания существует стандарт лечения, который прописывается в поле "лечение" набором лекарств.Теперь нужен запрос, который бы сортировал записи где есть отклонение от стандарта лечения.
OVT 256 МЕГАРЕСПЕКТ!
dr03 вне форума Ответить с цитированием
Старый 17.10.2012, 09:31   #2
alvk
Форумчанин
 
Регистрация: 22.05.2012
Сообщений: 136
По умолчанию

Вы сортировку и фильтрацию точно не путаете? А привести пример БД можете и поконкретнее, чего хотите, а то совсем не понятно, толи найти записи в запросе два, которых нет в запросе один, толи ещё что..
alvk вне форума Ответить с цитированием
Старый 17.10.2012, 10:12   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

alvk, +1

кроме того, у меня возникают подозрения, что при организации данных (на стадии проектирования структуры БД) уже допущены грубые ошибки!
Что значит "в поле"1" есть некая запись(предположим а,п,л,д,ж), " ?! Это что, в одной записи будет "а,л", в другой "п,д,ж", в третьей "а, д, ё, к, л, м, н" ?
ну и про лечение то же самое замечание - нельзя все лекарства хранить в одном поле. Это противоречит принципам реляционных СУБД => невозможности использовать SQL в полной мере!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2012, 10:47   #4
ovt256
Форумчанин
 
Регистрация: 01.04.2011
Сообщений: 226
По умолчанию

Цитата:
Сообщение от dr03 Посмотреть сообщение
Для этого типа заболевания существует стандарт лечения, который прописывается в поле "лечение" набором лекарств.Теперь нужен запрос, который бы сортировал записи где есть отклонение от стандарта лечения.
Если я правильно понимаю, стандарт лечения должен быть прописан в таблице "Заболевание". В Вашей таблице в поле1 врач вручную прописывает лекарства. Следовательно, возможны варианты в написании названий лекарств, порядке их перечисления, знаках препинания и т. п. Кроме того, полагаю, что практически для каждого лекарственного средства существует аналог (и не один), и дозировка может отличаться от стандарта. Таким образом, предстоит делать довольно сложный семантический разбор значения поля1 на составные части. При этом высока вероятность того, что некоторые назначения все равно останутся "непонятыми" алгоритмом распознавания. Такая задача не свойственна языку SQL, не говоря уже о том, что она плохо структурирована и для любого другого языка. Здесь я полностью согласен с Serge_Bliznykov +1.
На мой взгляд, в первую очередь необходимо выделить все лекарственные средства в отдельную таблицу, другими словами, создать справочник. Затем создать справочник аналогов и связать со справочником лекарств.
После этого, необходимо создать удобную форму, в которой бы врач выбирал уже имеющиеся значения в справочнике лекарств, а не печатал бы их названия с клавиатуры. Эти данные должны заносится не в поле1, а в отдельную таблицу, которая связывала бы Вашу таблицу (поле2) со справочником лекарств (врачи ведь редко ограничиваются каким-нибудь одним лекарством). Но ведь кроме лекарств существуют и различные процедуры, которые назначает врач. Их, возможно, также следует учесть.
Только после этого можно пытаться строить запрос.
Если руки золотые, то не важно, откуда они растут.

Последний раз редактировалось ovt256; 17.10.2012 в 11:39.
ovt256 вне форума Ответить с цитированием
Старый 17.10.2012, 15:13   #5
dr03
Форумчанин
 
Регистрация: 08.04.2011
Сообщений: 119
Хорошо

ух...коллеги!!!
подозревал , что не всё так просто
выкладываю базу с пояснениями по каждому из вопросов.
форма "описать карту" №5084-(вкладка диагноз и помощь)представлено стандартное(т.е отклонение карается увольнением) лечение данной патологии.
в поле "лечение" список лекарств для лечения патологии.
вопрос: возможно ли сделать выборку записей, где при записи О.инфаркт миокарда в поле "диагноз" в поле "лечение" не было бы к примеру записи "Sol.Morphyni 1%-1ml"?
а вообще задача состоит в том что бы вообще найти отклонение в тактике лечения. Я понимаю что предстоит много чего прописать-это не пугает! Просто не знаю как
Код HTML:
Следовательно, возможны варианты в написании названий лекарств, порядке их перечисления, знаках препинания и т. п. Кроме того, полагаю, что практически для каждого лекарственного средства существует аналог (и не один), и дозировка может отличаться от стандарта.
-в этой форме нет.Всё перечисленное обязано быть в ящике.
Код HTML:
кроме того, у меня возникают подозрения, что при организации данных (на стадии проектирования структуры БД) уже допущены грубые ошибки!
 Что значит "в поле"1" есть некая запись(предположим а,п,л,д,ж), " ?! Это что, в одной записи будет "а,л", в другой "п,д,ж", в третьей "а, д, ё, к, л, м, н" ?
-не исключаю, а что делать?..базу переписать-возможно...просто не знаю с чего начать
Код HTML:
Вы сортировку и фильтрацию точно не путаете? А привести пример БД можете и поконкретнее, чего хотите, а то совсем не понятно, толи найти записи в запросе два, которых нет в запросе один, толи ещё что..
-наверно путаю.Но суть не особо меняется, нужно найти или отсортировать отфильтровать отклонение от тактики лечения.
Вложения
Тип файла: rar мемфис.rar (6.68 Мб, 14 просмотров)
OVT 256 МЕГАРЕСПЕКТ!
dr03 вне форума Ответить с цитированием
Старый 25.10.2012, 14:39   #6
ovt256
Форумчанин
 
Регистрация: 01.04.2011
Сообщений: 226
По умолчанию

Еще раз вдумчиво прочитав пояснения, не обнаружил, где же все-таки содержится информация о стандарте лечения? Если в поле "Лечение". то где тогда лекарства, назначенные врачом в данном конкретном случае?
Если, все же, вся информация в БД присутствует (просто я не нашел), то можно попытаться определить степень соответствия лечения эталону, но не с помощью запроса, а с помощью функции, выполняющей примерно следующее:
1. В качестве входного параметра функция получает диагноз или id конкретного вызова с установленным диагнозом.
2. По диагнозу находим описание стандарта лечения и читаем его в строковую переменную.
3. Учитывая, что отдельные лекарства отделены друг от друга разделителем ";", считаем количество лекарств в стандарте (N) с помощью цикла While и функции InStr(...).
4. Объявляем строковый массив с числом элементов N.
5. Наполняем массив названиями лекарств с помощью цикла и функций InStr() и MidStr()
6. Читаем в другую строковую переменную описание лечения, назначенное врачом.
7. Выполняем действия, аналогичные пп.3, 4, 5.
8. Теперь сравниваем сначала первый массив со вторым, а затем второй с первым, считая количество несовпадений.
9. Считаем некий коэффициент, типа 1-Количество_несовпадений/(размер_массива_стандарт + размер_массива_лечение) и записываем его в таблицу вызовов.
10. Далее по этому полю можно сортировать, фильтровать и даже увольнять.

Даже если этот вариант решения задачи подойдет, я все равно думаю, что радость от этого будет недолгой, поскольку существует куча нюансов, о которых (некоторых) я писал в предыдущем своем сообщении.
Но надо же с чего-нибудь начинать!
Если руки золотые, то не важно, откуда они растут.

Последний раз редактировалось ovt256; 25.10.2012 в 15:04. Причина: Уточнение п.1 и исправление грамматических ошибок
ovt256 вне форума Ответить с цитированием
Старый 28.10.2012, 01:12   #7
dr03
Форумчанин
 
Регистрация: 08.04.2011
Сообщений: 119
Хорошо

я не думал,что дойду до таких сложностей!!!!
Решение как мне представлялось было таким:
1.Готовим запросы с выборкой заболеваний.(ОИМ, инфаркт, ОКС...и т.д.)
2.В каждом таком запросе, в поле лечение задаём то, что я бы и назвал "движок" запроса (что то вроде Like... и следом некая истина, то есть необходимый список лекарств, для патологии), который бы находил бы записи отличающиеся от прописной истины.
В принципе я думал ограничиться этим....и вовсе не думал получить такой разнос
Всем огромное спасибо за помощь.И если вдруг родятся ещё идеи-буду очень благодарен!
OVT 256 МЕГАРЕСПЕКТ!
dr03 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Снова даты и запрос MSD БД в Delphi 1 24.06.2010 23:22
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
MDIChild снова и снова... Siber_Dec Общие вопросы Delphi 2 13.12.2009 03:24
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50