|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.10.2012, 03:49 | #1 |
Форумчанин
Регистрация: 08.04.2011
Сообщений: 119
|
и снова запрос!
Доброго здоровья дорогие форумчане-программисты!
Помогите справиться с запросом. Около месяца ломаю голову над реализацией мудрёного запроса. задумка такая:из таблицы поля "2" запросом отсортированы запсиси, в поле"1" есть некая запись(предположим а,п,л,д,ж), и для этого поля необходимо составить запрос, который бы искал отличие. Теперь предметнее сделан запрос на оперделённое заболевание.Для этого типа заболевания существует стандарт лечения, который прописывается в поле "лечение" набором лекарств.Теперь нужен запрос, который бы сортировал записи где есть отклонение от стандарта лечения.
OVT 256 МЕГАРЕСПЕКТ!
|
17.10.2012, 09:31 | #2 |
Форумчанин
Регистрация: 22.05.2012
Сообщений: 136
|
Вы сортировку и фильтрацию точно не путаете? А привести пример БД можете и поконкретнее, чего хотите, а то совсем не понятно, толи найти записи в запросе два, которых нет в запросе один, толи ещё что..
|
17.10.2012, 10:12 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
alvk, +1
кроме того, у меня возникают подозрения, что при организации данных (на стадии проектирования структуры БД) уже допущены грубые ошибки! Что значит "в поле"1" есть некая запись(предположим а,п,л,д,ж), " ?! Это что, в одной записи будет "а,л", в другой "п,д,ж", в третьей "а, д, ё, к, л, м, н" ? ну и про лечение то же самое замечание - нельзя все лекарства хранить в одном поле. Это противоречит принципам реляционных СУБД => невозможности использовать SQL в полной мере! |
17.10.2012, 10:47 | #4 | |
Форумчанин
Регистрация: 01.04.2011
Сообщений: 226
|
Цитата:
На мой взгляд, в первую очередь необходимо выделить все лекарственные средства в отдельную таблицу, другими словами, создать справочник. Затем создать справочник аналогов и связать со справочником лекарств. После этого, необходимо создать удобную форму, в которой бы врач выбирал уже имеющиеся значения в справочнике лекарств, а не печатал бы их названия с клавиатуры. Эти данные должны заносится не в поле1, а в отдельную таблицу, которая связывала бы Вашу таблицу (поле2) со справочником лекарств (врачи ведь редко ограничиваются каким-нибудь одним лекарством). Но ведь кроме лекарств существуют и различные процедуры, которые назначает врач. Их, возможно, также следует учесть. Только после этого можно пытаться строить запрос.
Если руки золотые, то не важно, откуда они растут.
Последний раз редактировалось ovt256; 17.10.2012 в 11:39. |
|
17.10.2012, 15:13 | #5 |
Форумчанин
Регистрация: 08.04.2011
Сообщений: 119
|
ух...коллеги!!!
подозревал , что не всё так просто выкладываю базу с пояснениями по каждому из вопросов. форма "описать карту" №5084-(вкладка диагноз и помощь)представлено стандартное(т.е отклонение карается увольнением) лечение данной патологии. в поле "лечение" список лекарств для лечения патологии. вопрос: возможно ли сделать выборку записей, где при записи О.инфаркт миокарда в поле "диагноз" в поле "лечение" не было бы к примеру записи "Sol.Morphyni 1%-1ml"? а вообще задача состоит в том что бы вообще найти отклонение в тактике лечения. Я понимаю что предстоит много чего прописать-это не пугает! Просто не знаю как Код HTML:
Следовательно, возможны варианты в написании названий лекарств, порядке их перечисления, знаках препинания и т. п. Кроме того, полагаю, что практически для каждого лекарственного средства существует аналог (и не один), и дозировка может отличаться от стандарта. Код HTML:
кроме того, у меня возникают подозрения, что при организации данных (на стадии проектирования структуры БД) уже допущены грубые ошибки! Что значит "в поле"1" есть некая запись(предположим а,п,л,д,ж), " ?! Это что, в одной записи будет "а,л", в другой "п,д,ж", в третьей "а, д, ё, к, л, м, н" ? Код HTML:
Вы сортировку и фильтрацию точно не путаете? А привести пример БД можете и поконкретнее, чего хотите, а то совсем не понятно, толи найти записи в запросе два, которых нет в запросе один, толи ещё что..
OVT 256 МЕГАРЕСПЕКТ!
|
25.10.2012, 14:39 | #6 |
Форумчанин
Регистрация: 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 и исправление грамматических ошибок |
28.10.2012, 01:12 | #7 |
Форумчанин
Регистрация: 08.04.2011
Сообщений: 119
|
я не думал,что дойду до таких сложностей!!!!
Решение как мне представлялось было таким: 1.Готовим запросы с выборкой заболеваний.(ОИМ, инфаркт, ОКС...и т.д.) 2.В каждом таком запросе, в поле лечение задаём то, что я бы и назвал "движок" запроса (что то вроде Like... и следом некая истина, то есть необходимый список лекарств, для патологии), который бы находил бы записи отличающиеся от прописной истины. В принципе я думал ограничиться этим....и вовсе не думал получить такой разнос Всем огромное спасибо за помощь.И если вдруг родятся ещё идеи-буду очень благодарен!
OVT 256 МЕГАРЕСПЕКТ!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Снова даты и запрос | 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 |