我正在执行一个将两个表连接在一起的简单查询。我得到的是这样的。
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就不容易。
答案 0 :(得分:3)
我想说单独使用MySQL是不可能的 - 你必须在应用程序级别做一些技巧。也就是说,因为即使您发送一个将MySQL的所有数据带到您的应用程序(PHP)的查询,它们也将作为非规范化数据数组 - 您的第一种情况。
如果你想在第二种情况下得到数据,我建议使用一些ORM - 在Ruby中有ActiveRecord,在Perl中有Class :: DBi,DBIx :: Class等等 - 我不能为PHP做一个能够做到这一点,但我相信有很多。