2012-07-07 78 views
0

我不确定这是否甚至可以直接从MySQL查询(而不处理数据后),但我一直在思考一些事情......检索并格式化所有在MySQL结果列中有多条记录

假设我们有一张桌子,作者和另一本书。作者可以有许多书籍,书籍表中的author_id列表明了这一点。

是否有执行的查询方式:

1)获取单个作者的记录,与列名“图书”持有的账面记录的数组,属于作者。

2)结果相同,但对于数据库中的所有作者。

关于这是否可能的任何输入,以及任何方法将不胜感激!

更新

这是第一个查询的期望输出的一个例子:

stdClass Object 
(
[id] => 1 
[name] => Test Author 
[age] => 28 
[books] => Array 
    (
     [0] => stdClass Object 
      (
       [title] => Book 1 
       [id] => 1 
      ) 

     [1] => stdClass Object 
      (
       [title] => Book 2 
       [id] => 2 
      ) 

    ) 

) 

回答

1

1)是的,GROUP_CONCAT()可以做到这一点(虽然我不,这将是最好的方式去做吧)。

2)是的,GROUP BY作者

+0

我不相信GROUP_CONCAT就是我要找的,因为这concats单打行成一个字符串,现在所有记录到一个记录数组 - 检查我的编辑为例来自查询的期望结果。 – Sam 2012-07-07 00:37:29

+0

您可以在PHP中使用['implode()'](http://us3.php.net/manual/en/function.implode.php)轻松地将其转换为数组。这是你最接近MySQL的地方。 – 2012-07-07 00:39:24

+0

虽然我只有一个ID数组 - 没有其他图书信息。我不太乐观,我会为这个问题找到一个MySQL解决方案,我想我可能不得不继续使用JOINS并在查询执行后过滤/重构数据。尽管感谢您的答案! – Sam 2012-07-07 00:42:31

相关问题