2010-09-06 64 views
2

嗨我如何組這樣的數據: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工作人員。 sql查詢可以解決這個問題還是需要使用php?

回答

0

正確回答這個問題:

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

如果你想爲每個idstaff獲取名稱,使用子查詢的GROUP_CONCAT和CONCAT名字和姓。例如:

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

4

使用GROUP_CONCAT()

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

的(IdStaff + '(' +時間+ ')' 是不工作例如IdStaff是4和持續時間爲1時,輸出將。是5而不是4(1),所以如果IdStaff是4並且持續時間是AM,則輸出是4.如何解決這個問題? – cyberfly 2010-09-08 01:48:01