使用PHP处理SQL JOIN结果

时间:2012-05-03 20:33:03

标签: php mysql join

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

parents:
id | firstname | lastname

children:
id | firstname | lastname

parent_child_link
child_id | parent_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)
)

我怎样才能做到这一点?

非常感谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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