記事データベースには 2 つのタグ システム テーブルがあります。
1) タグの内容:
tag_id
テキスト (政治など)
2) tagmaps には次が含まれます:
tag_id
article_id
各記事のすべてのタグを一覧表示し (例: "政治外交アルゴア")、検索テーブルのキーワード フィールドに挿入します (article_id とキーワード フィールドを使用)。
phpmyadminでこれを行うことができることは知っていますが、方法がわかりません...
記事データベースには 2 つのタグ システム テーブルがあります。
1) タグの内容:
tag_id
テキスト (政治など)
2) tagmaps には次が含まれます:
tag_id
article_id
各記事のすべてのタグを一覧表示し (例: "政治外交アルゴア")、検索テーブルのキーワード フィールドに挿入します (article_id とキーワード フィールドを使用)。
phpmyadminでこれを行うことができることは知っていますが、方法がわかりません...
データを同じフィールドに返す場合は、次を使用できますGROUP_CONCAT()
。
select m.article_id,
group_concat(t.text) tags
from tags t
inner join tagmaps m
on t.tag_id = m.tag_id
group by m.article_id
この結果は次のようになります。
article_id | tags
1 | tag1, tag2, tag3
次に、それらをテーブルに挿入する場合:
insert into search (article_id, keywords)
select m.article_id,
group_concat(t.text)
from tags t
inner join tagmaps m
on t.tag_id = m.tag_id
group by m.article_id
同じフィールドにテキスト値を入れたくない場合:
insert into search (article_id, keywords)
select m.article_id,
t.text
from tags t
inner join tagmaps m
on t.tag_id = m.tag_id
テーブルを検索しようとしている場合はUPDATE
、次を使用できます。
update search
set keywords = (select group_concat(t.text separator ', ') tags
from tags t
inner join tagmaps m
on t.tag_id = m.tag_id
where search.article_id = m.article_id
group by m.article_id);
デモで SQL Fiddle を参照してください
友達から:
engine4_core_tagmapsのキーワードとしてengine4_core_searchleftjoin(select resource_id as tagid、group_concat(engine4_core_tags.text SEPARATOR'、'))を更新します。 .keywords = keywordstable.keywords where engine4_core_search.type ='artarticle' and engine4_core_search.id <10
これで10行が更新されます。