Идентификационный номер лица с двумя записями из отношения «многие ко многим» Access 2007 - PullRequest
1 голос
/ 01 марта 2012

http://imgur.com/uzPGs

Выше приведена крышка экрана моей схемы.

Таблица посещений содержит список личных идентификационных номеров, а ICD - список кодов, относящихся к определенному человеку.,Из таблицы соединений видно, что между Visits и ICDTable существует отношение «многие ко многим».Я пытаюсь сделать запрос, который позволяет человеку ввести две записи в ICDTable и вернуть идентификатор посещения только, если у человека есть обе из них.Я пытался исправить это из предыдущего запроса, который я написал, но я не могу понять, что происходит.Сам по себе запрос не «проваливается» в том смысле, что он позволяет мне искать некоторые вещи, но он явно ошибочен.Что мне не хватает?Gracias.

SELECT Visits.ID, Inf.desc, Sore.desc
FROM tblKentuckyCounties 
INNER JOIN 
(
    ICDTable AS Inf 
    INNER JOIN 
    (
        (
            (
                Visits 
                INNER JOIN ICDTable AS InfVisits 
                    ON Visits.ID=InfVisits.VisitsID
            ) 
            INNER JOIN ICDTable AS SoreVisits 
                ON Visits.ID=SoreVisits.ID
        ) 
        INNER JOIN ICDTable AS Sore 
            ON SoreVisits.ICD_IDFK=Sore.ID
    ) ON Inf.ID=Visits.ICD_IDFK
) 
    ON tblKentuckyCounties.ID=Visits.County
WHERE Inf.desc=[enter first term] 
    AND Sore.desc=[enter second term]

спасибо за редактирование.

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

SELECT DISTINCT Visits.KHA_ID, Visits.totalCharges
FROM (Visits INNER JOIN (ICDTable INNER JOIN ICDVisitsJxn ON ICDTable.ICD9ID = ICDVisitsJxn.ICD_IDFK) ON Visits.ID = ICDVisitsJxn.VisitsIDFK) INNER JOIN (ICDTable AS ICDTable_1 INNER JOIN ICDVisitsJxn AS ICDVisitsJxn_1 ON ICDTable_1.ICD9ID = ICDVisitsJxn_1.ICD_IDFK) ON Visits.ID = ICDVisitsJxn_1.VisitsIDFK
WHERE (((ICDTable.Description) Like [enter term]) AND ((ICDTable_1.Description) Like [enter another term]));

1 Ответ

2 голосов
/ 01 марта 2012

Вы можете разделить ваш запрос на подзапрос, содержащий только ICDVisits и ICDtable (1). В новом запросе вы затем присоединяетесь к Посещениям с этим подзапросом дважды (2).

(1)

SELECT ICDTable.Description, ICDVisits.VisitsIDFK
FROM ICDTable INNER JOIN ICDVisits ON ICDTable.ICD9ID = ICDVisits.ICD_IDFK;

(2)

SELECT Visits.ID
FROM query1 INNER JOIN (query2 INNER JOIN Visits ON query2.VisitsIDFK = Visits.ID) ON
query1.VisitsIDFK = Visits.ID
WHERE (((query1.Description) Like 'a') AND ((query2.Description) Like 'b'));

(запросы 1 и 2 являются объединением ICDVisits и ICDTable).

Забыл упомянуть: вам не нужно использовать поле ID внутри ICDVisitsJxn в качестве первичного ключа, вы можете просто сделать поля VisitsIDFK и ICD_IDFK первичным ключом. Это позволит избежать дублирования записей.

Запросы 1 и 2 (очевидно, то же самое): Query1 & 2

Комбинированный запрос:

Combined Query

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