2017-04-30 166 views
-1

我正在尝试创建一个将两个MySQL表连接在一起的内部连接(患者和约会表)。我在一张表格中显示了所有的患者预约,其中包括患者的身份证号码。该患者ID应该显示患者(名字+姓氏)作为全名而不是他们的ID号码。如果有人可以帮助我创建一个值得赞赏的查询语句。我对MySQL相当陌生,所以后续解释会非常有帮助。两个表之间的内部连接

这是我想加入到预约表中的患者表的结构:[![在这里输入的形象描述] [1]

[1]

这是结构约会表:

enter image description here

这是查询语句我试图实施,试图显示在约会表病人的全名。

function getAllCustomers(){ 
    $sql = " 
SELECT a.appointmentid 
    , a.doctorid 
    , a.appointmentdate 
    , a.appointmenttime 
    , p1.Name 
    , p2.Name 
    FROM appointment 
    JOIN patients p1 
    ON patientid = p1.firstname 
    JOIN patients p2 
    ON patientid = p2.lastname; 
"; 

    [1]: https://i.stack.imgur.com/54kMn.png 
+1

你有试过什么吗? –

+0

请阅读“SQL连接入门”https://www.w3schools.com/sql/sql_join.asp – niksofteng

+0

“患者约会,其中包括他们的患者ID号,该患者ID应显示患者...全名不是他们的ID数。”你想要什么? ID或不ID,这就是问题所在。一个ID显示一个ID。 –

回答

1

不要连接两次同一个表,也不要将一个字符串与一个整数进行比较。我认为是这样的:

SELECT a.appointmentid, 
     concat(p.firstname, ' ', p.lastname) as fullname_patient, 
     concat(d.firstname, ' ', d.lastname) as fullname_doctor 
FROM appointment as a 
INNER JOIN patients as p 
ON a.patientid = p.patientid 
inner join doctors as d 
on a.doctorid = d.doctorid 

会给你你想要的信息。

concat函数连接给定的值,使用逗号分隔每个值。