Web ページ用の単純なブログのようなニュース映画を作成しようとしています。そのために、3 つのテーブルがあります。1 つは投稿を含み、もう 1 つはカテゴリを含み、もう 1 つは投稿をカテゴリにリンクします (「関係」と呼ばれます)。
私はほとんどのクエリを管理することができましたが、まだ 1 つがわかりません: カテゴリのブログロールです。主な問題は、特定の各投稿からすべての関係を一覧表示したいということですが、特定の関係でフィルター処理しているため、もちろんこの 1 つしか表示されません。
例: テーブル 1 (投稿):
POST_ID POST_TITLE POST_CONTENT
1 TEST TEST
2 TES2 TEST2
表 2 (カテゴリ):
CAT_ID CAT_NAME
1 NEWS
2 PRODUCTS
表 3 (関係):
REL_POST REL_CAT
1 1
1 2
2 2
したがって、投稿 1 は「ニュース」と「製品」の両方に属しており、「製品」カテゴリのブログロールを要求すると、次のように出力されます。
POST_ID POST_TITLE POST_CONTENT POST_CATEGORIES
1 TEST TEST 1:NEWS,2:PRODUCTS
2 TES2 TEST2 2:PRODUCTS
その代わりに、POST_CATEGORIES には 2:PRODUCTS のみがリストされます。これは、REL_CAT でクエリをフィルター処理したためです。
これが私がなんとか作ったサンプルコードです:
SELECT `post_id`, `post_title`, `post_content`, GROUP_CONCAT(CONCAT(rel_cat,':', cat_name)) AS post_categories
FROM `posts`
LEFT JOIN `relations` ON (`rel_post` = `post_id`)
LEFT JOIN `categories` ON (`cat_id` = `rel_cat`)
WHERE rel_cat = 2
誰かが私が間違っていることを指摘できますか? 私はマニュアルを参照して Web を検索しようとしましたが、ほとんどの結果は逆の問題 (結合されたテーブルからの結果をフィルタリングしたい) を抱えている人々を指摘しています。読んだ。
前もって感謝します。