2013-06-25 1 views
0

HI У меня есть таблица информации о пациенте и таблица основных поисков, информация о пациенте содержит данные о значении, а ее текст извлекается из таблицы mstMasterLookup. Следующий пример кода отлично работал в mysql, но в доступе к его вызывающей ошибке.Несколько внутренних подключений по разным таблицам в MS ACCESS

Может ли кто-нибудь предложить предложение по этому вопросу. как для того чтобы достигнуть этой функции в Access

SELECT 
    PatientInformations.[Study_Id], 
    tblHospital.Text_data as Hospital, 
    tblGender.Text_data as Gender 
FROM 

PatientInformations 

INNER JOIN 

(SELECT text_data,Value_data 
      FROM mstMasterLookup 
      WHERE mstMasterLookup.Table ='Hospital' 
      AND Is_Active = true) tblHospital 
       ON tblHospital.Value_data =cstr(PatientInformations.Hospital_Id) 

INNER JOIN (SELECT text_data,Value_data 
      FROM mstMasterLookup 
      WHERE mstMasterLookup.Table ='Gender' 
      AND Is_Active = true) tblGender 
ON tblGender.Value_data =cstr(PatientInformations.Gender); 
+0

Доступ - это боль для этого. Обычно это решение создает представления для вашего подзадача, а затем соединяется с представлениями. – Kickstart

+0

не действует на Access, но некоторые вещи приходят на ум ... Имеет ли доступ распознавание «true» (и «false»), дополнительно cstr() для преобразования значения в строку --- это слишком поддерживается или вы нужно найти аналогичную функциональность при преобразовании в Access ... Опять же, Access не является моим языком/запросом на язык для первой линии ... просто предлагая предложение. – DRapp

ответ

1

Попробуйте

SELECT P.Study_Id, 
     H.text_data AS Hospital, 
     G.text_data AS Gender 
FROM (PatientInformations AS P 
    INNER JOIN (SELECT text_data, Value_data 
       FROM mstMasterLookup 
       WHERE Is_Active and Table="Hospital") AS H 
    ON P.Hospital_Id=CSTR(H.Value_data)) 
    INNER JOIN (SELECT text_data, Value_data 
       FROM mstMasterLookup 
       WHERE Is_Active AND Table="Gender") AS G 
    ON P.Gender=CSTR(G.Value_data); 

В то время как это работает, вы должны быть осторожны при редактировании его, так как Access не понимает этот синтаксис, и продолжает меняться скобку() в [].

Я думаю, что проблема заключалась в том, что вы не использовали предложение «AS» для псевдонимов таблицы.