MS ACCESS中不同表上的多个内部联接

时间:2013-06-25 09:47:43

标签: mysql ms-access

我有一个患者信息表和一个主查找表,患者信息包含值数据,其文本是从mstMasterLookup表中获取的。 以下代码示例在mysql中正常工作,但在访问时导致错误。

任何人都可以就此提出建议。如何在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);

1 个答案:

答案 0 :(得分: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”子句。