我在使用从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)
)
我怎样才能做到这一点?
非常感谢!
答案 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添加到其“父项”项。