2017-03-13 46 views
1

我有两个表。一个是TblPeople(ID(PK),名,姓,Embo ..)和其他是TBLembolization(EmbolizationID(PK),PeopleID(FK),EmbolizationDate,在单行显示重复的行mysql

这是我的查询,使用名称...

 SELECT tblpeople.FirstName,details.peopleID,details.embolizationDate FROM tblpeople 
     LEFT JOIN tblembolizations AS details ON tblpeople.ID=details.peopleID 
     WHERE tblpeople.Embo = 1 and concat(FirstName,' ',LastName) like '%alina%' 
     UNION 
     SELECT tblpeople.FirstName,details.peopleID,details.embolizationDate FROM tblpeople 
     LEFT JOIN tblembolizations AS details ON tblpeople.ID=details.peopleID 
     WHERE tblpeople.Embo != 1 and concat(' ',FirstName,' ',LastName,' ') like '%alina%' 

结果是:

............Result ....................... 
    FirstName |peopleID|embolizationDate 
    Alina  |16,459 |2017-27-03 
    Alina  | 16,459 |2017-24-03 
    Alina D. | 14,499 |2017-27-09 
    ====================================== 

可以看到,阿丽娜拥有像她那样的栓塞上两个日期的多个纪录,我想它在单一的记录,如果有人做了栓塞超过1次,所以我想要它这样的一些事情

............Result ....................... 
    FirstName |peopleID|embolizationDate|2ndembolization 
    Alina  |16,459 |2017-27-03  |2017-24-03 
    Alina D. | 14,499 |2017-27-09 
    ====================================== 

如果有人不止一次地完成了栓塞并且只有一次栓塞的时间比记录以正确的方式进行了一次,那么是否有可能在单一记录中得到答案。 谢谢

回答

2

我不明白你为什么使用UNION。这看起来像一个简单的聚合。

将值放在单独的列是棘手的。将它们放在分隔字符串中更容易。也许这是你想要的:

SELECT p.FirstName, p.ID, GROUP_CONCAT(d.embolizationDate) as dates 
FROM tblpeople p LEFT JOIN 
    tblembolizations details 
    ON p.ID = details.peopleID 
WHERE pconcat(FirstName,' ',LastName) like '%alina%' 
GROUP BY p.FirstName, p.ID; 
+0

谢谢你的工作:) –