您如何对此数据进行分组:
**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?
答案 0 :(得分:4)
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
结果: