如何将PHP中的3个表数据(SQL)合并到仪表板上?

时间:2016-11-22 08:04:37

标签: php mysql json dashboard

我正在尝试在仪表板上绘制获取的sql结果。目前,我有3个表格和详细信息如下: 1)客户2)订单3)出口

customers:
id   | name | details | status    |
101  | ABCD | #123    | Delivered |
102  | EFGH | #456    | Delivered |

orders:
id | ordered_time        |order_id |
1  | 2016-10-04 11:11:05 | 101     |
2  | 2016-10-04 12:11:05 | 102     |
3  | 2016-10-04 09:11:05 | 101     |
4  | 2016-10-04 08:11:05 | 102     |

exports:
id | product     | status                | export_id  |
1  | something1  | Delivered             | 101        |
2  | something2  | Not Delivered         | 101        |
3  | something3  | Not Delivered         | 102        |
4  | something4  | Delivered             | 102        |

查询1

SELECT distinct customers.name,customers.details,orders.order_id,ordered_time LEFT JOIN orders ON customers.id = orders.order_id WHERE orders.ordered_time = (SELECT Max(ordered_time) FROM orders WHERE customers.id = orders.order_id) OR orders.order_id is NULL order by id;

查询2

SELECT distinct exports.product,exports.status FROM exports INNER JOIN customers ON customers.id=exports.export_id;

两个查询结果分开。最重要的是,第二个查询有多个行与customers表的一个id相关联。如何格式化/获取它以获得如下所示:或者如何合并上述两个查询以获得以下结果?

final data to be plotted on dashboard:
id | name | details | products              | ordered_time        | cust_id | status    |
1  | ABCD | #123    | something1,something2 | 2016-10-04 11:11:05 | 101     | Delivered |
2  | EFGH | #456    | something3,something4 | 2016-10-04 12:11:05 | 102     | Delivered |

  Working PHP code for single query as follows:
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbName", $username, $password);

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $query = "SELECT distinct customers.name,customers.details,orders.order_id,ordered_time LEFT JOIN orders ON customers.id = orders.order_id WHERE orders.ordered_time = (SELECT Max(ordered_time) FROM orders WHERE  customers.id = orders.order_id) OR orders.order_id is NULL order  by id;";

    $result = $conn->prepare($query);
    $result->execute();
    $row_count = $result->rowCount();
    $jsonarray_data = array();

    if ($row_count > 0) {
  while($row = $result->fetch(PDO::FETCH_ASSOC)) {
    $jsonarray_data = array();
    $jsonarray_data["name"] = $row["name"];
    $jsonarray_data["details"] = $row["details"];
    $jsonarray_data["order_id"] = $row["order_id"];
    $jsonarray_data["ordered_time"] = $row["ordered_time"];

    array_push($jsonarray, $jsonarray_data);
  }
}
    $tableData = array(
            "data" => $jsonarray
        );
    echo json_encode($tableData,JSON_UNESCAPED_SLASHES);
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }

你能帮帮我吗?

0 个答案:

没有答案