に参加するとき、私は2つのテーブルをJOINをLEFTポストフェッチクエリを持って、あまりにも多くの重複値をconcatsカテゴリ名とタグ名の表ポストメタとしてGROUP CONCATは、LEFTは2つの異なるテーブル
LEFT JOIN wp_term_relationships AS term_link ON wpp.ID = term_link.object_id
INNER JOIN wp_terms AS terms ON term_link.term_taxonomy_id = terms.term_id
エクストラポストの詳細:今すぐ
LEFT JOIN wp_postmeta AS postmeta ON wpp.ID = postmeta.post_id
。私は、MySQL GROUP_CONCATで、カンマでリスト内のすべてのカテゴリを表示する:
GROUP_CONCAT(terms.name SEPARATOR ', ') AS allcatname
しかし、問題は、私の第二LEFTのwp_postmetaに登録しよう、である、何とか全てのカテゴリは、各wp_postmetaレコードのためにコピーされます見つけられた。
飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料、飲料:だから、私の 'allcatname' は、このようになります。飲料、飲料、飲料、飲料、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物、飲み物
だから...
私がGROUP_CONCATを維持したい理由は、「HAVING」を介してフィルタリングする必要があるからです。 私は、各投稿にリンクされているカテゴリレコードごとに1つのカテゴリのみを表示する方法を探しています:グループconcatを表示させます。例えば。 "ドリンク、ソーダ、コーラ"の3つのカテゴリがある場合は、ここで
がいっぱいクエリです:
SELECT
SQL_CALC_FOUND_ROWS
wpp.ID, wpp.post_title, wpp.post_author,
wpp.post_status,
GROUP_CONCAT(terms.name SEPARATOR ', ') AS allcatname
FROM wp_posts AS wpp
LEFT JOIN wp_term_relationships AS term_link ON wpp.ID = term_link.object_id
INNER JOIN wp_terms AS terms ON term_link.term_taxonomy_id = terms.term_id
LEFT JOIN wp_postmeta AS postmeta ON wpp.ID = postmeta.post_id
WHERE wpp.post_type = 'post'
AND wpp.post_warning <> 'no_image'
AND wpp.post_status <> 'trash'
AND wpp.post_status <> 'auto-draft'
AND (post_title LIKE '%$search_string%' OR postmeta.meta_value LIKE '%$search_string%')
GROUP BY wpp.ID
ORDER BY post_date DESC
LIMIT 20
? –
ユーザが特定の検索を実行すると、phpはこのコードをWHEREに挿入します: 'AND(post_title LIKE '%textile%' OR postmeta.meta_value LIKE '%textile%') ' – mesqueeb