0

記事データベースには 2 つのタグ システム テーブルがあります。

1) タグの内容:
tag_id
テキスト (政治など)

2) tagmaps には次が含まれます:
tag_id
article_id

各記事のすべてのタグを一覧表示し (例: "政治外交アルゴア")、検索テーブルのキーワード フィールドに挿入します (article_id とキーワード フィールドを使用)。

phpmyadminでこれを行うことができることは知っていますが、方法がわかりません...

4

2 に答える 2

2

データを同じフィールドに返す場合は、次を使用できます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 を参照してください

于 2012-11-08T18:08:36.400 に答える
0

友達から:

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行が更新されます。

于 2012-11-08T19:55:38.203 に答える