首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL推荐一款商品。

MySQL推荐一款商品。
EN

Stack Overflow用户
提问于 2012-11-18 22:35:47
回答 1查看 117关注 0票数 0

我正在尝试运行一个查询,对于选定的人,它将根据他们的购买历史和其他购买过该项目的人推荐项目。

示例:

代码语言:javascript
复制
Customer 1 purchases item A, and B.
Customer 2 purchases item B. 
Customer 2 is recommended, item A.  

我有4个表,我将列出它们与相关的行名。

代码语言:javascript
复制
Customer
PK: Cust_ID

Session
PK: Ses_ID
FK: Cust_ID

Order
PK: Order_ID
FK: ItemRef_ID
FK: Session_ID

Item
PK: Item_ID

我对SQL非常陌生,但这是我到目前为止所学到的东西,紧接着我真的不知道如何去做。

目前它只给出被选中的客户已经购买了'Lani Morgan‘的商品,但我希望它显示其他客户已经购买的商品,这些客户已经购买了'Lani Morgan’已经购买的商品。

代码语言:javascript
复制
SELECT Item_Desc, Item_ID 
FROM  rbickers.Item

LEFT JOIN rbickers.Order 
ON Item.Item_id = Order.itemref_id 

LEFT join rbickers.Session 
ON Order.Session_id = Session.Ses_id 

left join rbickers.customer
On customer.cust_ID = session.Cust_ID

Where Cust_First = "Lani" and Cust_Last = "Morgan"

GROUP BY Item_Type

LIMIT 10 

任何帮助都会非常感谢,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-18 23:56:29

所以根据你的基本版本和提供的模式,我看到的实现方式是检查每一件商品,如果不是由customer1购买的,而是由任何其他购买customer1购买的商品的客户购买的。由于此模式要求您连接所有给定表,因此我要求您为您提供的连接创建一个视图:

代码语言:javascript
复制
create view CustomerItems as 
SELECT *
FROM  rbickers.Item

LEFT JOIN rbickers.Order 
ON Item.Item_id = Order.itemref_id 

LEFT join rbickers.Session 
ON Order.Session_id = Session.Ses_id 

left join rbickers.customer
On customer.cust_ID = session.Cust_ID

#Where Cust_First = "Lani" and Cust_Last = "Morgan"

然后:

代码语言:javascript
复制
select distinct item.* from item, CustomerItems cust1 where 
cust1.Cust_First="Lani" and cust1.Cust_Last="Morgan" and 
item.Item_ID not in(
select Item_ID from CustomerItems cust2 where cust1.Cust_ID=cust2.Cust_ID) 
and exists(select * from CustomerItems cust3 where 
cust3.Cust_ID<>cust1.cust_ID and item.Item_ID=cust3.Item_ID);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13441113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档