基本上我正在为我的网站做推荐系统
我在mySQL数据库中有4个表:
用户
类别
项目
交易
所以这就是我想要的方式,
userID 1(Kyle)购买了笔记本电脑(ItemID 1),鼠标(ItemID 2)和电池(ItemID 4)
userID 2(史蒂文)购买了笔记本电脑(itemID 1)
userID 3(Jonathan)购买了鼠标(ItemID 2),电池(ItemId 4)和Mousepad(ItemID 3)
我希望系统将itemID 2(鼠标),itemID4(电池)和ItemID 3(鼠标垫)推荐给用户ID 2(史蒂文)
非常感谢任何帮助。感谢
答案 0 :(得分:0)
查询的作用是获取购买UserID's
的所有ItemID=2
。然后由这些用户获取ItemID
树枝。然后应用过滤器从结果中删除ItemId =2
。试试这个。
Select distinct ItemID
FROM transaction
where UserID IN (Select userID FROM Transaction where itemID = 2 )
AND ItemID <> 2
答案 1 :(得分:0)
喜欢这个
SELECT
i.itemID,
i.name,
u.username
FROM transaction
INNER JOIN user u ON (u.userID = t.userID)
WHERE u.userID = 2
然后,您必须使用您的语言将结果转换为可读行。
否则你必须寻找&#34; PIVOT&#34;将多个购买的商品(多行)转换为一行。
另一个解决方案是使用mssql的事务,允许解析结果并返回一行。