MYSQLとPHPによって取得する多次元配列
はじめてご質問させていただきます。
現在以下のようなテーブルが3つあります。
[ tbl1 ]
| tbl1Key | title |
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
[tbl2]
| tbl2Key | tbl1Key | tbl3Key |
| 1 | 2 | 2 |
| 2 | 3 | 1 |
| 3 | 3 | 4 |
| 4 | 1 | 3 |
[tbl3]
| tbl3Key | value |
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 4 | ddd |
上記のデータソースを元に以下のような結果を得たいと考えています。
array(
array( 'tbl1Key'=>1, 'title'=>'a', 'values' => array( array( 'tbl3Key'=>3, value='ccc' ) ),
array( 'tbl1Key'=>2, 'title'=>'b', 'values' => array( array( 'tbl3Key'=>2, value='bbb' ) ),
array( 'tbl1Key'=>3, 'title'=>'c', 'values' => array( array( 'tbl3Key'=>1, value='aaa'), array( 'tbl3Key'=>4, value='ddd' ) ),
array( 'tbl1Key'=>4, 'title'=>'d', 'values' = > array( array( 'tbl3Key'=> , value='' ) )
)
この場合phpによって
$sql = ("select * from `tbl1`");
$res = mysql_query( $sql, $con );
$data = array();
while( $row =mysql_fetch_object( $res ) )
{
$sql = ("select * from `tbl3`
inner join `tbl2` on `tbl3`.`tbl3Key`=`tbl2`.`tbl3Key`
where `tbl2`.`tbl1Key`={$row->tbl1Key}");
$res2 = mysql_query( $sql, $con );
$tmp = array();
while( $r = mysql_fetch_object( $res2 ) )
{
$tmp[] = $r->value;
}
$row->values = $tmp;
$data = $row;
}
まずtbl1のデータをすべて取り、配列dataに格納する段階で、tbl1と関連付けされたtbl3のvalueを取得し配列tblに格納、それを新しい要素として配列dataにプッシュしている状況です。
こういったテーブルでいうところの1カラムのみ配列で返すような事は、こういったループを使って以外にも可能なのでしょうか。
よろしくお願いいたします。