[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с вопросом!
SipFer
Здравствуйте, уважаемые форумчане! Прошу вашей помощи в реализации одного вопроса, который не дает покоя уже вторую неделю. Пишу интерфейс к базе данных. База данных больницы. Вопрос состоит в том, что каждый месяц, для каждого врача создается отчет на основе имеющихся данных в базе. если говорить конкретнее о количестве пациентов у данного врача за месяц ну и прочее. Так вот. Что бы каждый месяц получать актуальные данные за тек период
необходимо каким то образом обнулять базу, так как поля со временем будут расти. Вот собственно и весь вопрос. Простым удалением данных раз в месяц тут воспользоваться нельзя, так как эти данные в будущем потребуются. Буду рад каждому ответу и предложению.



Спустя 23 минуты, 39 секунд (18.03.2010 - 18:43) glock18 написал(а):
Ну если данных настолько много, что нужно их чистить, то можно за каждый месяц делать бэкап.

Для этого нужен примерно один скрипт и примерно одна строка в кроне. Скрипт должен вызывать примерно mysqldump, а затем truncate'ить таблицы (опасно тем, что данные по id станут неактуальны, если рассматривать в срезе сразу несколько таких дампов) или delete'ить (оставить id актуальными, хотя для удаления всей таблицы целиком не рекомендуется - лучше все таки использовать его). скрипт должен запускаться кроном раз в месяц в фиксированное время.

Для того чтобы к данным иметь доступ в любой момент, можно полученный из mysqldump файл сразу прогонять утилиту mysql с командой source и кидать результат в отдельную базу данных. как известно можно при одном подключении к серверу баз данных использовать сразу несколько.

PS: опять же, мне думается, что данных на самом деле не так много, чтобы чистка таблиц был актуальной.

PPS: устное предупреждение за не имеющее смысла название темы. первый пост не стал марать, в следующий раз давайте осмысленные названия темам.

Спустя 31 минута, 12 секунд (18.03.2010 - 19:14) SipFer написал(а):
вы немного меня не поняли..тут дело вот в чем. каждый месяц, к определенному врачу будут приходить новые пациенты. их нужно учитывать, занося в бд. соответственно они войдут в отчёт ЗА МЕСЯЦ(вернее их количество)!в следующем же месяце нужно будет в репорте выводить данные о количестве уже за текущий месяц. Так, если ложить все данные в базу, количество пациентов будет наращиваться..вот я и размышляю над тем, каким образом в отчет включать данные за каждый месяц, ну то есть в январе - столько то, в феврале - столько то, в марте - столько то...

Спустя 1 час, 26 минут (18.03.2010 - 20:40) glock18 написал(а):
построение такого отчета - один небольшой запрос. опять же думаю, что я все понял верно. сколько пациентов будет в больнице через месяц, а через 2 года? сомневаюсь, что оно много превысит количество проживающих в ее районе. это сколько?

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

если еще не убедил, то читайте выше, в первом своем посте я описал.

Спустя 2 минуты, 16 секунд (18.03.2010 - 20:42) sergeiss написал(а):
Ну хорошо... Скорее всего, у тебя есть информация о каждом посещении врача каждым пациентом. Верно? Если есть, то тогда там должна быть информация о дате посещения.
Далее просто находишь уникальных пациентов, обратившихся к конкретному врачу в течение определенного периода времени - и получаешь искомую цифру. Делается это всё одним запросом.
Указываешь период времени с первого до последнего числа месяца - получаешь данные за месяц. Указал неделю - получил за неделю. И так за любой интервал времени.

Спустя 29 минут, 11 секунд (18.03.2010 - 21:11) AntonNABSAL написал(а):
Есть вариант сделать таблицу действия - например приход пациента - это тоже действие у которого есть дата, имя пациента и обслуживающего врача и т.д. и тоже заносить эти данные.

Спустя 15 минут, 34 секунды (18.03.2010 - 21:27) SipFer написал(а):
sergeiss. очень понравилась ваша логика. не мог бы привести пример такого запроса?..

Спустя 1 час, 7 минут, 56 секунд (18.03.2010 - 22:35) sergeiss написал(а):
Допустим, у тебя есть таблица, показывающая, кто, когда и к кому приходил. Там могут быть и другие поля, но они в данном случае не важны. Нужны только эти 3 поля.
Таблица patients
---
id_patient
date_view
id_doctor
what_happened
---

Считаем количество уникальных пациентов, которые приходили к определенному доктору за указанный интервал времени.

SELECT count( distinct id_patient)
FROM patients
WHERE id_doctor=5 and date_view between '2010-02-01' and '2010-02-28'


В Постгре будет такой запрос smile.gif В MySQL, возможно, и по-другому его надо написать. Все данные можно заменить на переменные и настраивать запрос очень оперативно.

Если нужно получить данные сразу же по всем докторам, то тогда так:

SELECT id_doctor, count( distinct id_patient)
FROM patients
WHERE date_view between '2010-02-01' and '2010-02-28'
GROUP BY id_doctor


Имена докторов можно "подтягивать" из другой таблицы, где будет сделано четкое соответствие между их АйДи и именем, фамилией и другими данными.

Спустя 5 минут, 13 секунд (18.03.2010 - 22:40) SipFer написал(а):
Большое спасибо, sergeiss. Крайне признателен
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.