2011-03-29 49 views
0

如何将查询结果按未保存在数据库中的字段分组。按非数据库字段分组

例如,我想根据减去开始时间和结束时间的持续时间对结果进行分组。

这里是我如何找出时间

date1= $row_TicketRS['CloseDate']; 
$date2 = $row_TicketRS['OpenDate']; 

$diff = abs(strtotime($date2) - strtotime($date1)); 

$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); 


if ($days > 0) 

{ 

$time1 = $row_TicketRS['OpenTime']; 
$time2= $row_TicketRS['CloseTime']; 

$t1=($time1); 
$t2=($time2); 

$end=('14:30'); 
$start=('07:30'); 

$n = $end- $t1; 

$n2 = $t2- $start; 

$Hours2 = floor(($n+$n2)+(($days-1)*7)); 

echo $Hours2.' Hours'; 

但知道,我不知道如何将它添加到查询

这里是我的查询

$strQuery = "SELECT count(`ticket`.TicketID) as TotOutput, department.`DeptName` FROM `ticket`, `user`, department where ticket.OwnerID = user.EmpNo and user.`DepartmentID` = department.`DepartmentID` and OpenDate between'".$DateFrom."' And '".$DateTo."'" 
+0

一旦u得到的数据从MySQL,那么所有的休息是做检索阵列,使用PHP阵列功能做,创建一个新的阵列不管乌尔需要。 – diEcho 2011-03-29 06:10:10

+0

我这么长时间计算小时。这[文章](http://forums.webmasterhub.net/viewtopic.php?f=23&t=1831)将帮助你ü – diEcho 2011-03-29 06:16:32

+0

谢谢亲爱的大声笑我知道它的很长的路,但我花了很多时间来弄清楚,它现在工作正常我只是想如何我可以通过持续时间命令,因为你看到你们中的一些人说加入别名,但我不这样做 – Meera 2011-03-29 06:30:13

回答

0

如何加入那个计算值的查询用别名如下:

SELECT some_fields, end - start AS duration FROM table ORDER BY duration 
+0

谢谢你的回答 但我计算持续时间的方式有点复杂,所以我不'不知道如何添加查询 – Meera 2011-03-29 06:05:54

+0

这应该不重要。您只需将表达式放在那里,然后跟随AS alias_name_for_the_column并在order by子句中使用该表达式。 – mlemos 2011-03-29 06:13:57

+0

感谢亲爱的,但我怎么能做到这一点 – Meera 2011-03-29 06:23:02

2

它最好能够有细节,但派生表/联视图将允许您按一个计算值:

SELECT x.duration, 
     COUNT(*) 
    FROM (SELECT t.col, 
       t.end_time - t.start_time AS duration 
      FROM YOUR_TABLE t) x 
GROUP BY x.duration 
0

不要把别名隐藏的列,直接使用

〔实施例:

SELECT id, FLOOR(value/100) 
    FROM tbl_name 
    GROUP BY id, FLOOR(value/100); 

Reference

MySQL的PE rmits在组表达式BY 条款,所以别名是不必要的:

+0

谢谢您的回答 但我计算持续时间的方式很少复杂,所以我不知道如何添加它的查询 – Meera 2011-03-29 06:06:16

+0

@Maryan我想你一定要用php [date_diff](http://php.net/manual/en/function.date-diff.php)和请参阅该页面上的示例.. – diEcho 2011-03-29 06:11:50

+0

谢谢亲爱的,我花了很多时间来弄清楚,它的工作正常,现在我只想如何我可以通过持续时间命令,因为你看到你们中的一些人说加入别名,但我不做那 – Meera 2011-03-29 06:32:11