在我的数据库中,我有一个包含产品的表,另一个表具有与每个产品相关的标签.
当用户查看产品页面时,我想显示与他正在查看的产品“最相关”(或最接近)的产品.
假设产品带有5种不同的标签.我想获得具有相同5个标记的产品,然后具有相同5个标记的4个产品,然后具有相同5个标记的3个产品,等等…
为此,我猜测我将不得不创建一个或多个MYSQL查询,但我什至不知道从哪里开始.
匹配相同的5个标签很容易,我可以只使用WHERE tag =’?’ AND tag =’?’…但是如何获得另一个(4 / 5、3 / 5、2 / 5、1 / 5)?
任何帮助将不胜感激!
干杯
史蒂文
编辑
@Orbits:我的标签全都在不同的行上……如果没有,我可能会进行文本匹配,但是确实如此.标签行由(id,tag,product_id)组成
@ cusimar9:不同的表,如帖子中所述:P
@vbence:我相信它尽可能简单..这是…但是我没有连接表
产品:
CREATE TABLE `products` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
...
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
标签:
CREATE TABLE `tags` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(70) NOT NULL,
`product_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=116 ;