好吧,我有一个关系,它存储两个键,一个产品Id和一个属性Id。我想知道哪种产品与给定产品最相似。 (属性实际上是数字,但它使例子更加混乱,使他们已被更改为字母简化视觉表现。)SQL-选择最相似的产品
Prod_att
Product | Attributes
1 | A
1 | B
1 | C
2 | A
2 | B
2 | D
3 | A
3 | E
4 | A
最初,这似乎相当简单,只需选择属性,一个产品已经计算出每个产品共享的属性数量。然后将结果与产品的属性数量进行比较,我可以看到两种产品的相似程度。这适用于具有相对于其比较产品的大量属性的产品,但是当产品具有非常少的属性时会出现问题。例如,产品3几乎可以与所有其他产品配合(因为A很常见)。
SELECT Product, count(Attributes)
FROM Prod_att
WHERE Attributes IN
(SELECT Attributes
FROM prod_att
WHERE Product = 1)
GROUP BY Product
;
有关如何解决此问题或改进我当前查询的任何建议?
谢谢!
*编辑:产品4将返回count()= 1的所有产品。我想展示产品3更加相似,因为它具有较少的不同属性。
如何定义的最小集合类似的属性?这可以通过使用'HAVING'子句来实现。 – 2013-05-08 16:53:50
http://stackoverflow.com/questions/384276/how-to-create-search-engines-like-google – 2013-05-08 16:54:12
什么[RDBMS](http://en.wikipedia。org/wiki/Relational_database_management_system)您正在使用? 'RDBMS'代表*关系数据库管理系统*。 'RDBMS是SQL'的基础,并且适用于所有现代数据库系统,如MS SQL Server,IBM DB2,Oracle,MySQL等...... 您是否也可以提供您想要的结果的样本记录? – 2013-05-08 17:06:22