web-dev-qa-db-ja.com

K2キーワードが記事のタイトルにある場合、記事にタグを追加します

これは私のリーグとMySQLの知識から少し外れているようです。だから誰かがそれを助けることができればそれは大歓迎です。

以下を実行したいと思います。

  1. キーワードを入力/定義します。 mercedes
  2. タイトルにそのキーワードが含まれるすべてのK2記事を検索します
  3. これらの記事のそれぞれよりも、私のキーワードmercedesをタグとして割り当てます。

今...関連する列がリストされた3つのテーブルがあります。

k2_items

idtitle

k2_tags

idnamepublished(タグが公開されている場合、値1が割り当てられます)

k2_tags_xref

idtagIDitemID

したがって、クエリはk2_itemsテーブルからタイトルにkeywordが含まれるすべてのアイテムを選択する必要があります。keywordk2_tagstagとして既に定義されているかどうかを確認してくださいでない場合は、新しいタグを作成します。その後、新しいk2_tags_xrefエントリを生成して、keywordタグをK2記事アイテムに接続する必要があります。

私はまだ大学でデータベースコースを持っていなかったので、私はこの1つで私のリーグから抜け出しました、そしてそれは私が開発しているサイトの単なる簡単な修正であるはずでした。

これに関するどんな助けも大歓迎です、そして私はそれが後でコミュニティを助けると確信しています。

ありがとう!

5
Reygoch

実行する必要のあるクエリがいくつかあります。 最初にこれらのクエリをテスト環境で使用してください。アイデアがあります:

/* Query 1: Select the id of the tag */ 
SELECT id FROM `#__k2_tags` WHERE `name` = 'mercedes' LIMIT 1;

/* Query 2: If previous query returned null, create a new tag */
INSERT INTO `#__k2_tags`
SET `name` = 'mercedes',
`published` = 1;

/* Query 3: Use this to get the last id or use id from Query 1 */
SELECT LAST_INSERT_ID();

/* Query 4: Insert tags for each article that contains in the title the Word mercedes */
INSERT INTO `#__k2_tags_xref` (`tagID`,`itemID`)
(
    SELECT DISTINCT 'YOUR_TAG_ID', i.id
    FROM `#__k2_items` AS i
    WHERE LOCATE('mercedes', title) > 0
)
2
Valentin Despa