连接 - 将结果合并为单个多维数组

时间:2011-05-26 06:31:20

标签: 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就不容易。

1 个答案:

答案 0 :(得分:3)

我想说单独使用MySQL是不可能的 - 你必须在应用程序级别做一些技巧。也就是说,因为即使您发送一个将MySQL的所有数据带到您的应用程序(PHP)的查询,它们也将作为非规范化数据数组 - 您的第一种情况。

如果你想在第二种情况下得到数据,我建议使用一些ORM - 在Ruby中有ActiveRecord,在Perl中有Class :: DBi,DBIx :: Class等等 - 我不能为PHP做一个能够做到这一点,但我相信有很多。