mySQL Group问题

时间:2010-09-06 07:11:38

标签: php mysql

您如何对此数据进行分组:

**Date** **Day** **DURATION** **IDSTAFF**

21-09-2010 Sun      AM           1   
22-09-2010 Mon      AM           1  
21-09-2010 Sun      PM           2  
22-09-2010 Mon      PM           2  

所以它会变成这样吗?

**Date** **Day** **DURATION** **IDSTAFF**

21-09-2010 Sun      AM           1 (am),2 (pm)   
22-09-2010 Mon      AM           1 (am),2  (pm)

使用sql group by只显示一个id staff。 sql查询可以解决这个问题还是需要使用php?

2 个答案:

答案 0 :(得分:4)

使用GROUP_CONCAT()

SELECT Date, Day, Duration group_concat(IdStaff + '(' + Duration + ')' SEPARATOR ',')
from yourtable
group by Date, Day, Duration

答案 1 :(得分:0)

这个问题的正确答案:

SELECT DATE, DAY, GROUP_CONCAT(IDSTAFF, ' (' , PERIOD , ')' SEPARATOR ', ') AS PERSONNAME FROM LEAVERECORD GROUP BY DATE

如果要获取每个idstaff的名称,请使用group_concat中的子查询并连接firstname和lastname。例如:

SELECT DATE, DAY, PERIOD, GROUP_CONCAT((SELECT CONCAT(FIRSTNAME,' ',LASTNAME) from STAFF where STAFF.IDSTAFFTABLE=IDSTAFF), ' (' , PERIOD , ')' SEPARATOR ', ') AS PERSONNAME FROM LEAVERECORD GROUP BY DATE

结果:

alt text