使用替代结果进行数据库标记

时间:2010-08-11 08:38:20

标签: php mysql database relational-database

我正在开发一个PHP / Jquery自动提示工具,它将查询一个大型标签表,但我需要 对db模式的一些建议,它将返回相关标记以及基于匹配的结果。

例如:

我输入'Web':

结果

'网络开发者'

'网页设计师'

'网络分析师'

以及相关标签......

'PHP Developer'

' Flash Programmer'

所以显然每个标签都需要有一个列,其中包含某种关系或父母价值......最好的方法是什么?

谢谢!

---更新-----------------

当然 - 再次感谢你的帮助!

这是表格..

标签

Id TagName

1 Web开发人员

2 Web Designer

3网络分析师

4 PHP开发人员

5 Flash编程器

RelatedTags

TagId RelatedTagId Strength

1 4 0

1 5 7

由于'Flash Programmer'的强度值是7,我希望它出现在PHP程序员之前..(希望格式足够清晰......)

再次感谢!

1 个答案:

答案 0 :(得分:1)

表格标签

Create Table Tags (Id int, TagName varchar(50))

Table RelatedTags(字段FK到标签(Id))

Create Table RelatedTags(TagId int, RelatedTagId int)

查询选择标记匹配的输入和相关标记

SELECT Id, TagName, Strength
FROM Tags
WHERE TagName LIKE 'Web%'
UNION
SELECT Id, TagName, Strength
FROM Tags 
WHERE tags.Id IN (SELECT RelatedTagId
       FROM Tags t
       JOIN RelatedTags r
       ON (t.Id = r.TagId)
       WHERE t.tagName LIKE 'Web%')
ORDER By 3 DESC