Лучший способ получения информации из нескольких таблиц базы данных - PullRequest
0 голосов
/ 16 февраля 2009

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

Мой вопрос: как лучше это сделать? Должен ли я делать SELECT из каждой таблицы, где совпадает идентификатор пациента, упорядочивать их по дате, а затем сохранять их в некоторой искусственной структуре, подобной списку (упорядоченной по дате)? Или есть лучший способ сделать это?

Я использую WPF и SQL Server 2008 для этого приложения.

Ответы [ 5 ]

4 голосов
/ 16 февраля 2009

Как уже говорили другие, JOIN - это способ, которым вы обычно делаете это. Однако, если в одной таблице для пациента имеется несколько строк, есть вероятность, что вы получите данные в некоторых столбцах, которые повторяются в нескольких строках, что часто нежелательно. В этом случае иногда проще использовать UNION или UNION ALL.

Допустим, у вас есть две таблицы, examinations и xrays, каждая с идентификатором пациента, датой и некоторыми дополнительными данными. Вы можете объединить их так:

SELECT PatientID, ExamDate [Date], ExamResults [Details]
FROM examinations
WHERE PatientID = @patient

UNION ALL

SELECT PatientID, XrayDate [Date], XrayComments [Details]
FROM xrays
WHERE PatientID = @patient

Теперь у вас есть один большой набор результатов со столбцами PatientID, Date и Details. Я нашел это удобным для "объединения" нескольких таблиц с похожими, но не идентичными данными.

1 голос
/ 16 февраля 2009

Если это то, что вы собираетесь делать часто, у меня будет соблазн создать денормализованное представление для всех данных пациента (объединить соответствующие таблицы) и проиндексировать соответствующий столбец (столбцы) в вид . Затем используйте соответствующий метод (хранимая процедура и т. Д.), Чтобы получить данные для переданного идентификатора пациента.

1 голос
/ 16 февраля 2009

Используйте JOIN для получения данных из нескольких таблиц.

0 голосов
/ 16 февраля 2009

Я бы сделал это с помощью отдельных операторов SELECT, поскольку простое JOIN, вероятно, не сработает из-за того, что в некоторых таблицах для пациента может быть более 1 строки.

Таким образом, я хотел бы получить несколько наборов результатов в простом наборе данных, добавить DalaRelation, кэшировать объект и запросить его по строке (по дате, по типу экзамена, подмножествам ...)

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

0 голосов
/ 16 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...