mysql来重新存储已订购产品的订单的所有细节


mysql to resturn all details of orders where a product has been ordered

我希望能够为所有订单列出每个订单中已购买的所有项目,其中该订单中的项目是特定项目。

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

因此,我想对所有购买番茄酱的顾客说,该产品还附带了哪些产品。

它类似于你在任何网络市场上看到的"其他人也买了…"

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

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

假设:

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'

Fiddle示例:http://sqlfiddle.com/#!9/0b9f4/2