Как объединить 3 таблицы данных (SQL) в PHP, чтобы построить на приборной панели?

Я пытаюсь отобразить полученные результаты 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        |

Query1

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;

Оба запроса приводятся отдельно. И самое главное, второй запрос имеет несколько строк, связанных с одним идентификатором таблицы клиентов. Как мне отформатировать / получить его так, как показано ниже: ИЛИ Как объединить два запроса выше, чтобы получить приведенный ниже результат?

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();
}

Не могли бы вы помочь мне здесь?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector