mysql - Joins - 将结果合并到单个多维数组中

标签 mysql

我正在执行一个将两个表连接在一起的简单查询。我得到的是这样的。

array(
    [0] => array(
        'id' => 52
        'name' => 'charles',
        'sale_id' => 921,
        'sale_time' => 1306393996,
        'sale_price' => 54.21
    ),
    [1] => array(
        'id' => 52
        'name' => 'charles',
        'sale_id' => 922,
        'sale_time' => 1306395000,
        'sale_price' => 32.41
    ),
    ...
);

...这是预期的结果。但是,我希望查询返回如下内容:

array(
    [0] => array(
        'id' => 52,
        'name' => 'charles',
        'sales' => array(
            [0] => array(
                'sale_id' => 921,
                'sale_time' => 1306393996,
                'sale_price' => 54.21
            ),
            [1] => array(
                'sale_id' => 922,
                'sale_time' => 1306395000,
                'sale_price' => 32.41
            ),
            ...
        )
    )
)

现在我意识到我可以简单地执行两个查询,一个用于用户信息,另一个用于销售,然后使用我使用的任何语言(在本例中为 PHP)将这些数组合并在一起。但是我有很多属性数组,查询和合并这些属性对我来说似乎非常不优雅(尽管它确实有效)。在我看来,有一种方法可以在不复制数据的情况下处理单个统一对象。

只是想知道是否有一个简单的查询,或者仅通过 MySQL 就不容易做到这一点。

最佳答案

我想说这仅靠 MySQL 是不可能的——您必须在应用程序级别做一些技巧。也就是说,因为即使您发送一个查询将所有数据从 MySQL 带到您的应用程序 (PHP),它们也会以非规范化数据数组的形式出现——您的第一个案例。

如果你想像第二种情况那样获取数据,我建议使用一些 ORM——在 Ruby 中有 ActiveRecord,在 Perl 中有 Class::DBi、DBIx::Class 等等——我不能为能够执行此操作的 PHP 命名一个,但我相信有很多。

关于mysql - Joins - 将结果合并到单个多维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6134574/

相关文章:

MySQL左连接子查询空连接

cron 作业中的 PHP 脚本是双重处理

mysql - 从外键 MySQL 获取行值

MySQL 日期之间

php - 回应查询不起作用(返回 "Resource id #18")

php - 数据库设计: join with uid or with two fields

mysql - 调用退出后, Node Mysql 无法将查询入队

Mysql 连接不在其中的同一个表

mysql - 选择变量的第二低 'id' 值

sql - 4表查询/连接。获取重复行