【问题标题】:MySQL Add tag to article if the keyword is in the article title [closed]如果关键字在文章标题中,MySQL将标签添加到文章[关闭]
【发布时间】:2014-09-02 19:04:15
【问题描述】:

这似乎有点超出我对 MySQL 的了解和了解(我不确定 MySQL 是否可能)。因此,如果有人可以提供帮助,将不胜感激。

我想做以下事情:

  1. 输入/定义关键字,例如mercedes
  2. 查找标题中包含该关键字的所有 Joomla K2 文章
  3. 比这些文章中的每一篇都指定我的关键字mercedes 作为标签。

现在...列出了三个表,其中列出了相关列:

k2_items

id, title

k2_tags

idnamepublished(如果标签发布,则赋值为 1)

k2_tags_xref

idtagIDitemID

因此,查询应该从k2_items 表中选择标题中包含keyword 的所有项目,检查keyword 是否已经在k2_tags 中定义为tag,如果不是,则创建一个新标签。之后,应生成新的k2_tags_xref 条目以将keyword 标签与K2 文章项连接起来。

我的大学里还没有数据库课程,所以我有点不喜欢这个课程,它应该只是我正在开发的网站的一个简单的润色。

我们将不胜感激,我相信它会在以后对社区有所帮助。

谢谢!

【问题讨论】:

  • @Sadikhasan,这是你们模组的连锁反应还是什么?问题非常具体,并且有一个很好的简短答案,正如 Gordon 在下面演示的那样。比什么问题?

标签: php mysql sql algorithm tags


【解决方案1】:

SQL 中的部分实际上非常简单。如果您在k2_tags_xref(tagId, itemId) 上有一个唯一索引,这是最简单的。这有重复的数据库检查。

那么你需要做两件事:

  • 查找标题中包含关键字的所有项目
  • 为关键字查找tagId

这会产生如下查询:

insert into k2_tags_xref(tagId, itemId)
    select t.tagId, i.itemId
    from k2_items i cross join
         (select t.tagId from k2_tags where tag = 'mercedes') t
    where i.title like '%mercedes%';

您还需要将标签放入标签表中,如果它不存在的话。但是上面的查询是SQL代码的基础。

【讨论】:

  • 谢谢!明天试试。我对 MySQL 的了解仍然很低。我需要正确学习如何进行这些连接以及这 t 是什么。和我。代表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
相关资源
最近更新 更多