我希望能够为所有订单列出每个订单中已购买的所有项目,其中该订单中的项目是特定项目。
我希望能够搜索所有订购番茄酱的订单,并列出这些订单中的所有产品。
因此,我想对所有购买番茄酱的顾客说,该产品还附带了哪些产品。
它类似于你在任何网络市场上看到的"其他人也买了…"
我使用的数据库有一个包含产品和订单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