2015-04-04 50 views
-2

我希望能够列出所有订单中的订单项目是特定项目的所有订单的每个订单中已购买的所有项目。mysql将恢复订购产品的订单的所有详细信息

例如:我希望能够搜索番茄酱已订购的所有订单,并列出这些订单中的所有产品。

因此,我希望能够对所有购买番茄酱的顾客说,还有哪些其他产品伴随着该项目。

它类似于你希望在任何网络市场的地方,“其他人也买了......”看什么

我使用该数据库的产品和订单ID的表。我想最简单的方法是编写一个PHP脚本来执行2个查询,一个返回包含有问题的项目的所有订单,另一个列出每个订单ID的所有项目。但我曾希望有一个“聪明”的查询可以取代它。

我的最终目标是搜索物品列表中存在的所有订单。这个想法是试图减少结果,只显示那些已经找到指定产品组合的人。

+0

OK又在哪里是你的代码? – 2015-04-04 10:42:32

+0

这是一个很好的起点:http://en.wikipedia.org/wiki/Recommender_system – eggyal 2015-04-04 10:43:36

回答

0

假设:

products(id integer, name varchar(25)orders (id integer)order_items (order_id integer, product_id integer)

使用此:

SELECT oi.order_id, p2.name 
    FROM products p 
    INNER JOIN order_items oi 
     ON p.id = oi.product_id 
    INNER JOIN order_items oi2 
     ON oi.order_id = oi2.order_id 
    INNER JOIN products p2 
     ON oi2.product_id = p2.id 
    WHERE p.name = 'Carrot' 

小提琴例如:http://sqlfiddle.com/#!9/0b9f4/2

+0

这正是我所希望的。非常感谢。如果我可以再问一件事?那么,如何获得一组订单,显示所有订单中所有项目列表中存在的项目列表中的所有信息? – 2015-04-04 13:51:31

+0

我很快就会回复你。 – 2015-04-04 14:03:10

+0

你可能会对这个问题感兴趣:http://stackoverflow.com/questions/29431729/select-result-that-match-all-array-values/29432206#29432206我认为这几乎是你问的相同的东西 – 2015-04-04 17:40:36

相关问题