Я не уверен, возможно ли это сделать в Access; я гуглил форумы и пока не нашел работающего решения...
По сути, есть список пациентов, которые сдают несколько образцов крови в разное время. Каждый образец собирается и регистрируется с помощью штрих-кода стойки. Каждый штрих-код стойки (образец) имеет несколько штрих-кодов пробирки (частей образца)
У меня есть база данных, состоящая из трех таблиц.
Информация об идентификаторе: Информация о пациенте (идентификатор пациента, демографическая информация)
штрих-коды: список всех образцов, собранных для любого пациента (штрих-код стойки; штрих-код пробирки a; штрих-код пробирки b)
Назначение штрихкода: штрихкоды стоек из таблицы штрихкодов, назначенные каждому пациенту. (Идентификатор пациента, штрихкод стойки 1, штрихкод стойки2) Штрихкод стойки 1 — это образец, собранный в момент времени 1, а штрихкод стойки 2 — это образец, собранный для того же пациента в момент времени 2. Штрихкод стойки 1 и штрихкод стойки 2 могут быть найдены как «штрихкод стойки» в таблице штрихкодов.
У меня есть внутреннее соединение между информацией об идентификаторе и назначениями штрихкода с идентификатором пациента. У меня есть 2 внешних соединения между штрихкодами и назначениями штрихкода. rackbarcode из таблицы штрихкодов связан как с RackBarcode 1, так и с RackBarcode 2 в таблице назначений штрихкода.
Я хочу связать информацию об идентификаторе пациента с соответствующими штрихкодами, для чего я использую таблицу BarCode Assignment. Возможно, есть лучший способ сделать это, и я открыт для предложений.
Моя конечная цель — выполнить запрос, который покажет мне всю выборочную информацию по пациенту:
ID пациента; Штрих-код стойки 1; Штрих-код пробирки A1; Штрих-код пробирки B1; Штрих-код 2; Штрих-код пробирки A2; Штрих-код пробирки B2
решение1
Из вашего описания структуры базы данных следует, что вам нужно выполнить соединение с двумя ссылками таблицы Barcodes
, по одной ссылке на каждую rackbarcode
.
Например:
select
ba.[patient id],
ba.[rackbarcode 1],
b1.[tube barcode a],
b1.[tube barcode b],
ba.[rackbarcode 2],
b2.[tube barcode a],
b2.[tube barcode b]
from
(
[barcode assignment] ba inner join barcodes b1 on
ba.[rackbarcode 1] = b1.rackbarcode
)
inner join barcodes b2 on
ba.[rackbarcode 2] = b2.rackbarcode
Пробелы в названиях полей в вашем вопросе не были последовательными, и вы ссылались на одни и те же поля, используя разные названия в разных местах вашего вопроса, поэтому я не могу гарантировать, что я использовал правильные названия полей в приведенном выше примере.
Обратите внимание, что ba
, b1
& b2
— это всего лишь псевдонимы, и их не нужно менять.