2013-07-13 20 views
1

一个名为users_log的表包含用户登录和注销时间和日期,但我无法按照我的意图对数据进行排序。如何检索相同的列数据并显示为组

查询

mysql_query('SELECT * FROM users_log WHERE u_id = 52 ORDER BY date_log') 

它像

Fri 12 Jul 13 - 03:41:40 PM - 03:42:31 PM 

Fri 12 Jul 13 - 05:35:40 PM - 05:42:31 PM 

Sat 13 Jul 13 - 02:29:09 PM - 02:34:52 PM 

users_log表数据进行排序

log_id, u_id, date_log, logged_date, login_time, logout_time 

2,  52, 2013-01-12, Fri 12 Jul 13, 03:41:40 PM, 03:42:31 PM 

我打算显示的数据

  Fri 12 Jul 13 
    03:41:40 PM - 03:42:31 PM 
    05:35:40 PM - 05:42:31 PM 
     Sat 13 Jul 13 
    02:29:09 PM - 02:34:52 PM 

回答

3

这样做:

$result = mysql_query('SELECT * FROM users_log WHERE u_id = 52 ORDER BY date_log'); 
$sorting = array(); 
while($row = mysql_fetch_assoc($result)) 
{ 
    $sorting[$row['logged_date']][] = $row['login_time']."-".$row['logout_time']; 
} 

//Now you loop over the sorted data using foreach($sorting as $key => $value) and display it any way you want. 

我希望这能有一定的帮助。

+0

谢谢saran banarjee ...它显示为我想要的,但它显示未定义的偏移量1 –

+0

让我看看代码foreach中的行($ sorting为$ key => $ value)您已完成 –

1

恕我直言,你应该这样做(我假设你想要做它在PHP):

SELECT date_log FROM users_log WHERE u_id = 52 GROUP BY date_log, 

然后遍历结果(在PHP中)并获得日期对应的行:

SELECT * FROM users_log WHERE u_id = 52 AND date_log = $date_for_current_iteration ORDER BY date_log; 
相关问题