将数组作为结果行中的字段

时间:2013-10-18 18:12:03

标签: php mysql arrays

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

假设我们有两个表:用户订单

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

|------------------------------|
| 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']或类似的东西?

1 个答案:

答案 0 :(得分:2)

进行LEFT连接(如果用户可能没有任何订单),然后根据用户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;
}