我正在执行一个将两个表连接在一起的简单查询。我得到的是这样的。
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/