我完全難以理解我在T-SQL中編寫的查詢。我有一個映射表,其中書ID存儲在BookId
列中,AttributeId
存儲在另一列中。SQL Server,在映射表中將一個對象ID與其他對象ID進行匹配
CREATE TABLE BookMap (
BookId int not null,
AttributeId int not null
)
每本書都可以有1到10個屬性。如果第一本書的屬性是3-6,我希望找到另外一些書,它們的屬性也是3-6。出於某種原因,我想不出如何編寫這個查詢。
有什麼建議嗎?
下面是編輯: 爲了進一步解釋,我有這樣的數據:
INSERT INTO BookMap (BookId, AttributeId) VALUES (1, 3);
INSERT INTO BookMap (BookId, AttributeId) VALUES (1, 6);
INSERT INTO BookMap (BookId, AttributeId) VALUES (2, 3);
INSERT INTO BookMap (BookId, AttributeId) VALUES (2, 4);
INSERT INTO BookMap (BookId, AttributeId) VALUES (2, 6);
INSERT INTO BookMap (BookId, AttributeId) VALUES (5, 3);
INSERT INTO BookMap (BookId, AttributeId) VALUES (5, 6);
INSERT INTO BookMap (BookId, AttributeId) VALUES (6, 3);
INSERT INTO BookMap (BookId, AttributeId) VALUES (6, 5);
我想查詢基於BOOKID = 1,並返回BOOKID有確切3和6,而不是更多或更少的。另一種方法是返回BookId列表和百分比匹配,按百分比遞減排序。要麼爲我的任務工作。
如果書1有屬性3和6,你是否希望a)所有屬性爲3的書和所有屬性爲6的書,或者b)只有屬於3和6的書?另外,說書2有屬性3,5和6.是否應該排除它,因爲它有一個額外的不匹配的屬性? – Tony 2012-04-10 18:17:18
第1冊有第3和第6個。我想返回,例如第5冊,它具有屬性3和6.我不想返回第2本書,它具有屬性3,4和6.我將編輯爲進一步解釋。 – 2012-04-10 19:37:56