基本上,我目前正在为我的网站做推荐系统
我在mySQL数据库中有4个表:
用户
- 用户ID
- 用户名
- 密码
- userLevel
类别
- 类别ID
- 类型
项目
- itemID
- 名称
- 价格
- 数量
- 类别ID
- 说明
交易
- transactionID
- 类别ID
- itemID
- 用户ID
这就是我想要的工作方式,
userID 1(Kyle)购买了笔记本电脑(ItemID 1)、鼠标(ItemID 2)和电池(ItemID 4)
userID 2(Steven)购买笔记本电脑(itemID 1)
userID 3(Jonathan)购买了鼠标(ItemID 2)、电池(ItemID 4)和鼠标垫(ItemID 3)
我希望系统向用户ID 2(Steven)推荐itemID 2(鼠标)、itemID 4(电池)和itemID 3(鼠标垫)
- 交易表将记录所进行的任何交易
任何帮助都将不胜感激。感谢
查询所做的是获取购买了ItemID=2
的All UserID's
。然后获取这些用户的ItemID
分支。然后应用滤波器以从结果中去除CCD_ 4。试试这个。
Select distinct ItemID
FROM transaction
where UserID IN (Select userID FROM Transaction where itemID = 2 )
AND ItemID <> 2
像这个
SELECT
i.itemID,
i.name,
u.username
FROM transaction
INNER JOIN user u ON (u.userID = t.userID)
WHERE u.userID = 2
然后,您必须使用您的语言将结果转换为可读的行。
否则,您将不得不寻找"PIVOT"来将多个购买的商品(多行)转换为一行。
另一种解决方案是使用带有mssql的事务,允许解析结果并返回一行。