mysql页面对象_MySQL通过标签选择相关对象

在显示特定对象的页面上,我需要基于标签显示该对象的相关对象. ′具有最匹配标签的对象应位于顶部.基本上我基本上需要确定每个对象有多少标签与页面上的对象匹配,并显示最佳结果.

我的数据库模式:

Table Object

------------

id

name

Table Tagset

-------------

object_id

tag_id

Table Tag

------------

id

name

最佳答案

这应该做您想要的:

SELECT object.name,COUNT(*) AS tag_count

FROM tagset T1

JOIN tagset T2

ON T1.tag_id = T2.tag_id AND T1.object_id != T2.object_id

JOIN object

ON T2.object_id = object.id

WHERE T1.object_id = 1

GROUP BY T2.object_id

ORDER BY COUNT(*) DESC

结果:

'object2',2

'object3',1

使用此测试数据:

CREATE TABLE object (id int NOT NULL,name nvarchar(100) NOT NULL);

INSERT INTO object (id,name) VALUES

(1,'object1'),(2,'object2'),(3,'object3');

CREATE TABLE tagset (object_id int NOT NULL,tag_id int NOT NULL);

INSERT INTO tagset (object_id,tag_id) VALUES

(1,1),(1,2),3),4),5);

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值