mysql多表查询在发送到视图之前返回排序结果

时间:2015-10-29 20:10:59

标签: php mysql codeigniter

我正忙着创建网站来控制文件流。我有以下表格

图纸 enter image description here

绘图修订 enter image description here

传递单 enter image description here

客户端 enter image description here

项目详情enter image description here

在我的网站中,用户可以选择他们想要发送客户端的文档以及它应该发送到哪些客户端。然后,该站点应在一个视图中显示这一点,其中在页面顶部一次显示单据号,日期,客户端和项目信息,并将发送到该客户端的文档放在此下面的html表中。

我创建了以下查询。

SELECT tr.*, d.*, dr.*, cl.*, us.*, proj.project_name 
FROM transmittal_slips AS tr 
   INNER JOIN drawings AS d ON tr.dwg_id = d.dwg_id 
   INNER JOIN dwg_rev AS dr ON d.dwg_id = dr.dwg_id 
   INNER JOIN client AS cl ON tr.client_id = cl.client_id 
   INNER JOIN `user` AS us ON tr.user_id = us.id 
   INNER join projects AS proj ON tr.project_no = proj.project_no 
 WHERE tr.slip_num = '".$slip_num."' AND dr.slip_num = '".$slip_num."'   
 ORDER BY cl.client_id"

我的查询连接所有表格,并且在Codeigniter中给我一个数字数组,我可以传递给视图,但是我需要过滤数组以获得我想要的显示,如上所述。

这是使用foreach循环和一些标记以及html表生成的当前显示。 enter image description here

这是我想要显示数据的方式。 enter image description here

如何在将每个客户端的结果传递给视图之前对其进行过滤或排序,这样我就可以使用下面列出的文档来查看显示单据号,日期,客户信息等的视图。我想你可以将我想做的事情与亚马逊等在线商店的发票进行比较。

请帮助某人

1 个答案:

答案 0 :(得分:1)

看起来你有一些标题信息对所有行都是相同的,然后是每行不同的一些数据。如果你想对它进行形式化,在查询之后,你可以做类似的事情:

$header = rows[0];
$list = array_map(function($row) { return array('dwg_id' => $row->dwg_id, ...); }, $rows);

但实际上你需要在视图中做的就是首先根据一行渲染标题,然后循环遍历所有行并挑选你需要的字段。