タイトルがひどいので、Google で探しているものが見つからないのでしょう。
私がやろうとしているのは、古い社内ブログからいくつかのデータをエクスポートして、それを別のものにインポートできるようにすることです。私の問題は、私が探している種類の JOIN を作成することはできますが、2 番目のテーブルの一致には複数の行が含まれている可能性があるため、大量の重複データが発生することです。2 番目のテーブルから結果を取得し、それらを (複数の一致がある場合) クエリ結果の 1 つのフィールドに連結する必要があります。クエリに WHERE 制約は必要ありません。blog_posts テーブル全体を取得しようとしています。
このテーブル構造の簡略化されたレイアウトが、次のことを説明するのに役立つことを願っています。
blog_posts blog_categories
---------------------------------------
post_id post_id
post_content category_id
post_author
そして、ここにいくつかのサンプルデータがあります。
blog_posts テーブル データ:
post_id post_content post_author
----------------------------------
1 foo1 bob
2 foo2 bob
3 foo3 fred
blog_categories テーブル データ:
post_id category_id
--------------------
1 1
1 2
1 6
2 1
3 2
3 4
そして、私の理想的な結果は次のようになります。
post_id post_content post_author category_ids
------------------------------------------------
1 foo1 bob 1,2,6
2 foo2 bob 1
3 foo3 fred 2,4
私が得ることができる最も近いものは、次のような単純な結合でした:
SELECT
blog_posts.post_id,
blog_posts.post_content,
blog_posts.post_author,
blog_categories.category_id
FROM blog_posts
INNER JOIN blog_categories
ON blog_posts.post_id = blog_categories.post_id
しかし、それは blog_posts テーブルで複数回一致を返します (一致する各 category_id に対して 1 回)。
SQL だけを使用して目的を達成する方法はありますか? ある種のサブ選択が機能すると考えていますが、それがどのように機能するかについて頭を悩ませることはできません.現在の投稿IDですが、その構文は私をエスケープします。効率的である必要はありません。これは 1 回限りの操作です。