たとえば、タグ付きの単純なブログがあるとします。Blog テーブル、Tag テーブル、TagRelation テーブルがあります。単一のクエリを実行して、タグを含む各ブログ投稿の関連データをすべて独自の単一行で取得したいと考えています。
SELECT Tag.id AS 'Tag.id', Tag.name AS 'Tag.name', Blog.id AS 'Blog.id', Blog.author AS 'Blog.author', Blog.title AS 'Blog.title', Blog.content AS 'Blog.content'
FROM Blog
INNER JOIN TagRelation ON TagRelation.target = Blog.id
INNER JOIN Tag ON Tag.id = TagRelation.Tag
WHERE Blog.id = '101'
このクエリは、投稿 ID 101 の同じブログ投稿データを含む各タグの行を提供し、追加するGROUP BY Blog.id
と 1 行のみが提供されますが、最初のタグの結果は任意です。
私が欲しいのは次のようなものです:
Blog.id | Blog.author | Blog.title | Blog.content | Tag.id | Tag.name | Tag.id | Tag.name
-----------------------------------------------------------------------------------------
101 | someone | something | lolstuff | 1 | tag1 | 2 | tag2
私のクライアント側のコードがそれをオブジェクトに簡単に解析できるように。これは、同じブログ ID に対して複数の一致する行を処理したり、各投稿のタグを取得するためだけにサブクエリを実行したりせずに、MySQL で可能ですか? (もちろん、実際のデータベースはこれよりも大きく複雑なので、できるだけ多くの結合を行いたいと考えています。)