1

MySQL から取得した PHP でのデータ処理に問題があります。これはテーブル スキーマです。

parents:
id | firstname | lastname

children:
id | firstname | lastname

parent_child_link
child_id | parent_id

複数の親を 1 つの子にリンクしたいので、この方法でデータを保存する必要があります。子を取得したいときは、子のすべての情報だけでなく、親の 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 つの配列が得られますが、これを 1 つの配列にしたいです。

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で処理できます。子 ID でインデックス付けされた新しい配列を作成し、クエリ結果の各項目について、まだ存在しない場合は配列に追加します。存在する場合は、親 ID をその「親」項目に追加します。

于 2012-05-03T20:55:25.790 に答える