在SQL中使用多个内部联接

时间:2013-02-08 02:38:40

标签: sql

运行以下查询时,我收到错误消息

  

查询表达式中的语法错误(缺少运算符)   'diagnosis.Patient_No ='Patient_No INNER JOIN疾病ON   Illness.Illness_Code = Diagnosis.Illness_Code'

SELECT Patient.Last_Name AS LastName,
       Patient.First_Name AS FirstName,
       Patient.Gender AS Gender,
       Patient.Age AS Age,
       Illness.Illness_Desc AS illness,
       Medication.Medication_Desc AS Medication,
       Prescription.Dosage AS Dosage
FROM Patient
INNER JOIN Diagnosis ON Patient.Patient_No = Diagnosis.Patient_No
INNER JOIN Illness ON Diagnosis.Illness_Code = Illness.Illness_Code
INNER JOIN Prescription ON Patient.Patient_No = Prescription.Patient_No
INNER JOIN Medication ON Prescription.Medication_code = Medication.Medication_code

我确认sick_code都在疾病和诊断表中,一切都应该有效吗?不确定在这次加入期间我是否需要将这些疾病代码添加到select语句中?我尝试将它们添加到我的Select中,这对我来说似乎也没有用。

4 个答案:

答案 0 :(得分:6)

Medication.Medication_Desc AS Medication,
Prescription.Dosage AS Dosage

您的FROM语句中似乎没有加入药物和处方表。

答案 1 :(得分:5)

您没有为第一次加入中的第二个Patient_No列指定表格。它应该是

INNER JOIN Diagnosis ON Diagnosis.Patient_No = Patient.Patient_No

您还要从两个未加入的表中选择列 - 药物和处方。但是,这应该会给您一个不同的错误:“多部分标识符'Medication.Medication_Desc'无法绑定。”

您获得的具体错误听起来像我提到的第一个问题。这是一个有效的SQL过滤器,省略了药物/处方表。

SQL Fiddle

答案 2 :(得分:0)

另外为其他两个表添加INNER JOINS

INNER JOIN Medication ON Medication.<> = Patient.<>

INNER JOIN Prescription ON Prescription.<> = Patient.<>

答案 3 :(得分:0)

你仍然无法得到同样的错误..。现在发生了什么? 试试下面的

 Select p.Last_Name LastName,
   p.First_Name FirstName,
   p.Gender Gender, p.Age Age,
   i.Illness_Desc illness,
   m.Medication_Desc Medication,
   s.Dosage Dosage
From Patient p
    Join Diagnosis d    On d.Patient_No = p.Patient_No
    Join Illness i      On i.Illness_Code = d.Illness_Code
    Join Prescription s On s.Patient_No = p.Patient_No
    Join Medication m   On m.Medication_code = p.Medication_code
相关问题