私が説明する最善の方法は、例を挙げて説明することです
Table 1
ID | name | class
-------------------------
1 | first name | a
2 | second name | b
Table 2
ID | name_id | meta_key | meta_value |
-------------------------------------------------------
1 | 1 | image | someImage.jpg |
2 | 1 | description | very long description |
3 | 2 | image | someImage_2.jpg |
4 | 2 | description | very long description 2 |
表 1 から名前とクラスを選択しようとしています。またname_id
、ID (表 1) と同じ表 2 のすべてのレコードも選択しようとしています。
これが私が今持っているクエリです:
SELECT
table1.name,
table1.class,
table2.name_id,
table2.meta_key,
table2.meta_value
FROM
table1
LEFT JOIN
table2 ON ( table1.ID = table2.name_id )
WHERE
table1.ID = '2'
これは機能し、name_id = 2 を持つ表 2 のエントリと同じ数の要素を持つ配列を返します。
最初のテーブルの結果を 1 つ含む配列と、2 番目のテーブルの結果を含む別の配列を返す方法はありますか?
更新: 理想的な結果は次のようになります: $result['table1'][0] = array('name' => 'second name', 'class' => 'b')
$result['table2'][0] = array('name_id' => 2,
'meta_key' => 'image',
'meta_value' => 'someImage_2.jpg')
$result['table2'][1] = array('name_id' => 2,
'meta_key' => 'description',
'meta_value' => 'very long description 2')
それが理にかなっていることを願っています。