我有一张桌子,上面有从我们的购物网站订购的商品。每行都有一个项目编号和相关的购物车编号。因此,每个购物车编号可以有一个或多个与之关联的商品编号。我们想弄清楚通常与给定项目一起订购的前4-5项。就像你在亚马逊等大型网站上看到的那样,我想知道是否有一个我可以运行的查询,它将创建一个包含完整数据的表。或者我必须在编程(C#等)中做。新表可能有5列。第一列是主要项目编号,然后是另外4列最常订购的项目编号。如果这是可能的,我认为这是一个复杂的查询,所以我没有任何东西粘贴在这里,以显示我已经开始。
以下是包含相关数据的表格的片段。是否还需要其他信息?
这是一个SQL小提琴:http://sqlfiddle.com/#!9/b88417/1
答案 0 :(得分:1)
我认为这可能有用,如果你能做一个sql小提琴,它可能更容易测试:
SELECT s1.itemRef,
s2.itemRef,
COUNT(s2.itemRef) AS count_items
FROM `cart_numbers` AS s1
JOIN `cart_numbers` AS s2 ON s2.cartNumber = s1.cartNumber
WHERE s2.itemref != s1.itemref
AND s1.cartNumber = 129009
GROUP BY s2.itemRef
ORDER BY COUNT(s2.itemRef) DESC
LIMIT 5
更新了查询,这将检索最多5个产品,这些产品通常是通过购物车中的产品购买的
答案 1 :(得分:0)
Select itemRef, count(*) as bought
from Orders
where itemRef <> @item and cartNumber in
(select cartNumber from Orders where itemRef = @item)
group by itemRef
order by count(*) desc