このような 3 つのテーブルを持つデータベースがある場合:
Table: BlogEntries
BlogEntries.id (pk)
BlogEntries.blogText
Table: Tags
Tags.id (pk)
Tags.TagName
Table: TagsForBlogEntries
TagsForBlogEntries.id (pk)
TagsForBlogEntries.tag_id
TagsForBlogEntries.entry_id
ブログエントリのリストを取得し、次のようなデータを取得したい場合 (配列として表現):
array (
[0] => array(
[id] => '1',
[blogText] => 'example text',
[tags] => array(
array([id]=>1, [TagName] => 'A Test Tag 1'),
array([id]=>2, [TagName] => 'A Test Tag 2'),
)
),
(つまり、すべてのタグを使用)。これを行う最良の方法は何ですか?
私は現在これを行います(疑似コード)-基本的にサブクエリを「手動で」実行します(元のSQLクエリからではありません):
select * from BlogEntries;
$rows =array();
foreach($blogEntries as $row) {
$row['tags'] = mysql_fetch_array( mysql_query("select * from Tags left join TagsForBlogEntries on TagsForBlogEntries.tag_id = tags.id where entry_id = " . $row['id'] ) ) ;
$rows[] = $row;
}