0

我有一个 php 页面,想显示来自多个表(当前 3 个表)的数据,
所有表都有日期时间列
,其他列完全不同(在数字和数据类型等方面)我想显示
其中任何一个的最新行三个表 三个表
中的任何一个中的第二个最近的行 三个表中的任何一个中的
第三个最近的行
,依此类推

我的表格结构如下

ATTANDANCE [a_id,date-time,employee,attandance_more....]   

TASKS_ASSIGN[ta_id,date-time,employee,title,detail,duration,task_assign_more.....]

TASK_COMPLETED [tc_id,date-time,employee,stars,task_completed_more....]   

我想显示为 facebook

 Alam has joined office at 23-mar-2013 **08:00am**   
 Haider has joined office at 23-mar-2013 **08:01am**  
 Alam has completed xyz-task at 22-mar-2013 **03:45pm**
 Alam has joined office at 22-mar-2013 **10:12am**
 ......
4

2 回答 2

3

似乎您只想要列的一个子集。我不确定表格和您的结果之间的确切关系是什么,但类似于:

select  'attandance' as which, employee, `datetime`
from attendance
union all
select 'assign' as which, employee, `datetime`
from tasks_assign
union all
select `completed` as which, employee, `datetime`
from tasks_completed
order by `datetime` desc

也就是说,您可以使用子查询来获取每个表中列的子集。然后使用union all将它们组合在一起并order by按照您想要的顺序放置它们。

于 2013-04-21T13:07:48.797 回答
0

首先,将所有结果(来自 3 个表)添加到一个数组中。($theArray)
然后使用usort对数组进行排序。像这样的东西:

function cmp($a, $b)
{
    if ($a->date-time == $b->date-time) {
        return 0;
    }
    return ($a->date-time < $b->date-time) ? -1 : 1;
}

usort($theArray, "cmp");
于 2013-04-21T13:24:37.203 回答