0

我对数据库很陌生,所以我的问题是:

假设我们有两个表:UsersOrders

是否有可能(以及如何做到这一点)在一个查询中列出所有用户及其数据(名字和姓氏、出生日期等)和相关订单?所以结果应该是这样的:

|------------------------------|
| John Doe  |  Order 1 details |
|           |  Order 2 details |
|           |  Order 3 details |
|------------------------------|
| Janny Hoe |  Order x details |
|           |  Order y details |
|------------------------------|

所以你明白了吗?table1 中的每一行都有一个字段,其中包含 table2 中的多行?我听说 MySQL 不返回多维数组,那么它是如何返回这样的呢?

任何帮助将不胜感激!

编辑:

表结构可能是这样的:

TABLE users:
id | name

TABLE orders:
id | user_id | date_ordered | other unrelevant data...

我知道这对于连接是可行的,但让我感到困惑的是它会返回什么?结果是否会有字段订单,它是包含订单行数据的数组,如 $result[0]['orders'][0]['date_ordered'] 或类似的东西?

4

1 回答 1

2

执行左连接(如果用户可能没有任何订单),然后根据用户 ID 将结果收集到一个数组中:

SELECT Users.id, Users.name, Order.detail
FROM Users
LEFT JOIN Order
ON Users.id= Order.user;

前任:

$userOrders = array();

$sql = 'SELECT Users.id, Users.name, Order.detail
        FROM Users
        LEFT JOIN Order
        ON Users.id= Order.user';

foreach ($pdo->query($sql) as $row) {
    $userOrders[$row['user_id']][] = $row;
}
于 2013-10-18T18:16:19.997 回答