好吧,我有一個關係,它存儲兩個鍵,一個產品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