1

我在使用从 MySQL 检索到的 PHP 处理数据时遇到问题。这是表架构:

parents:
id | firstname | lastname

children:
id | firstname | lastname

parent_child_link
child_id | parent_id

我需要以这种方式保存数据,因为我想将多个父母链接到一个孩子。现在,当我想检索一个孩子时,我想获取孩子的所有信息,还有父母的 id。这显然是一个 JOIN 查询,所以我使用:

SELECT *
FROM children c
JOIN parent_child_link l on l.child_id=c.id
WHERE c.id=1

现在,当这个 id=1 的孩子有 2 个父母(假设 id 为 1 和 2)时,我得到以下结果:

id | firstname | lastname | parent_id
1    test        test       1
1    test        test       2

如果我在 PHP 中处理它,我会得到 2 个数组,但我希望它在一个数组中,例如

array(
    'firstname' => 'test', 
    'lastname' => test',
    'parents' => array(1, 2)
)

我怎样才能做到这一点?

非常感谢!

4

2 回答 2

1

您可以使用 GROUP_CONCAT 返回值的逗号分隔数组

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

于 2012-05-03T20:41:20.023 回答
0

您可以在 php.ini 中处理您的查询结果。创建一个以子 ID 为索引的新数组,并为查询结果中的每个项目创建一个新数组,如果它不存在则将其添加到数组中。如果是,则将父 ID 添加到其“父母”项。

于 2012-05-03T20:55:25.790 回答