使用查询填充来自不同表的值

时间:2014-12-07 00:32:49

标签: mysql

我有两个表患者和治疗类型。在过去的一个小时里,我一直在尝试查询每位患者的治疗类型名称,并将患者身份1分为一列,另一列为2,但不是他们的身份,而是他们的名字和姓氏。 / p>

我已经从excel中发布了一个图像模型,我希望查询在下面进行。

患者表的名称是患者,治疗表的名称是 treatment_type

idPatients PatientFName PatientLName PatientDOB PatientsCounty PatieritsCity PatientsOccupation Specalist_idSpecialist
         1 Roger        James        16/05/1992 Hampshire      Portsmouth    Student            2
         2 James        Murray       08/02/1960 Middlesex      Harrow        Business Owner     1

http://i.stack.imgur.com/MKKBd.png

我希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

我不认为你会得到你在这里想要的东西,你不能按照你想要的方式为每个病人创建新的专栏。

但是,您可以针对每位患者的每个条件获取一行,并在每行中包含他们的姓名和ID。然后使用您的prepossessing语言来检测ID何时相同,并以您要查找的格式列出该名称下的所有条件。为此,您需要LEFT JOIN。这是一个很好的链接,可以看到这些可以为您做些什么:

http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

根据您的意图,声明将如下所示:

SELECT p.ID
       , CONCAT(p.FirstName, " ", p.LastName) AS PatientName 
       , t.TreatmentName
FROM   patients p
       LEFT JOIN treatment_type t ON p.ID = t.PatientID;

Here's an sqlfiddle to show that。这些表的名称与您的完全相同,因此您需要调整它们以适合您的数据库。如果您只是创建这个数据库,那么您应该考虑开发某种一致的命名约定,那么您的内容似乎有些分散。

编辑:根据carlosh12对OP的评论,您可以使用数据透视表来执行此类操作,但我不确定它是您的&#是什么? #39;需要这种情况。如此处详细说明,在SQL之外执行它会更快更容易。

编辑2 抱歉,忘记链接到我的SQLfiddle。它现在在那里。 Here is an edit我在其中包含了一个ORDER BY语句来回答你的评论。