MySQL查询到多维php数组

时间:2015-02-27 16:04:43

标签: php mysql arrays multidimensional-array

我正在构建一个应用程序,其中我有多个MySQL表,我需要创建一个多维的PHP数组,但我对如何查询它有点困惑。我已经搜索了很多解决方案,但其中很多都来自一个数据库表。

该应用程序是一个公司的调度软件,这个特殊的部分是他们可以显示客户名称和客户所在的卡车,以及每辆卡车上的材料。

我的目标是看起来与此相似:

goal

一次只能有一个客户名称(每天超过一个,但循环中只列出一个)。不同数量的卡车可以在每个工作中携带不同类型和数量的材料。一些较小的工作只有一辆卡车和一种材料,但较大的工作可能有一辆以上的卡车运载多种材料类型。上面的图片被认为是一个更大的工作,多辆卡车运载多种材料。较小的工作看起来一样,但只有客户的名字,并显示“卡车8:”和“材料1”(或当天安排的任何卡车及其上的材料)。

这些是我正在使用的表格:

  • job_truck

job_truck

  • job_truck_material

materials

  • 材料

job_truck_material

上面会输出: 日期:2015年2月27日

  • 工作:1619(Doe)
  • 卡车7:材料1
  • TRUCK 60:MATERIAL 1
  • 卡车8 :(空)


  • 工作:439(琼斯)

  • TRUCK 35 :(空)

我首先查询jobs表(未显示)并返回jobs.idjobs.namejobs.date。当我需要根据日期(显然)访问信息时,jobs.date最终会出现在查询的WHERE子句中。我假设,下一步是查询job_truck表...两个表之间的链接为job_truck.idmaterials.job_truck。接下来将通过查询materials.material并链接到job_truck_material.materialmaterials.idjob_truck_material.material作为材料表的ID)来查找每辆卡车的材料。

我已经尝试过加入表格,但这样做我只返回每个项目中的一个,如:1-job,1-truck,1-material。我确定加入表可能是要走的路,但这就是为什么我在这里,因为我不确定结构是否正确。我也尝试过嵌套循环,但这也没有成功。

我真的希望我能正确解释......任何帮助都非常感谢。提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试查询JOIN上的所有行,然后迭代渲染为多维:

$query = "SELECT *, materials.id AS material_id FROM job_truck JOIN job_truck_material ON job_truck_material.job_truck = job_truck.id JOIN materials ON job_truck_material.material = job_truck_material.id";
$jobs = array();

foreach ($conn->query($query ) as $row) {
    $job_id = $row['jobid'];
    $truck_id = $row['truck_id'];
    if(empty($jobs[$job_id])) {
        $jobs[$job_id] = array();
    }
    if(empty($jobs[$job_id][$truck_id])) {
        $jobs[$job_id][$truck_id] = array();
    }
    $jobs[$job_id][$truck_id][$row['material_id']] = $row['material'];
}