从mySQL中检索另一个数据以获取项目建议

时间:2015-03-02 10:48:08

标签: php mysql

基本上我正在为我的网站做推荐系统

我在mySQL数据库中有4个表:

用户

  • 用户ID
  • 用户名
  • 密码
  • 的UserLevel

类别

  • 的categoryID

项目

  • itemID
  • 名称
  • 的categoryID
  • 描述

交易

  • TRANSACTIONID
  • 的categoryID
  • ITEMID
  • 用户ID

所以这就是我想要的方式,

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(史蒂文)

  • 交易表将记录所做的任何交易。

非常感谢任何帮助。感谢

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的事务,允许解析结果并返回一行。