2015-04-20 187 views
1

下一个sql语句正常工作。它同时显示patient_id和serv_name,但我尝试加入这个SQL语句INNER JOIN SQL QUERY

INNER JOIN Patient P ON (C1.patient_id=P.patient_id) 

显示patient_name而不是patient_id

SELECT C1.patient_id, S.serv_name 
FROM 
    Checkup_Details C 
    INNER JOIN Services S ON (C.serv_id=S.serv_id), 
    Checkup C1 
WHERE 
    C1.today = DATE() AND C1.check_id=C.check_id 
ORDER BY C.check_id 

因此,如何是我该做的,但我不知道如何exactely。

回答

0

假设领域patient_name是Checkup_Details,你必须把

SELECT C1.patient_name ... 

,而不是从

SELECT C1.patient_id ... 
0

只需添加INNER JOIN子句,以获得表患者和变化C1的列。 patient_id by P.patient_name。

SELECT P.patient_name, S.serv_name 
FROM 
    Checkup_Details C 
    INNER JOIN Services S ON (C.serv_id=S.serv_id), 
    INNER JOIN Patient P ON (C1.patient_id=P.patient_id) 
    Checkup C1 
WHERE 
    C1.today = DATE() AND C1.check_id=C.check_id 
ORDER BY C.check_id 
0

您不应该混合使用隐式和显式join语法。一个简单的规则:从不在from子句中使用逗号:

SELECT C1.patient_id, S.serv_name 
FROM Checkup_Details C INNER JOIN 
    Services S 
    ON C.serv_id = S.serv_id INNER JOIN 
    Checkup C1 
    ON C1.check_id = C.check_id INNER JOIN 
    Patient P 
    ON C1.patient_id = P.patient_id 
WHERE C1.today = DATE() 
ORDER BY C.check_id;