生成'客户也买了'从表

时间:2017-11-15 13:00:53

标签: php mysql

我有一个购物车'表格如下:

+----+---------+-----------+----------+----------+
| id | orderID | productID | quantity |  status  |
+----+---------+-----------+----------+----------+
|  1 |    3443 |       333 |        2 | complete |
|  2 |    3443 |       202 |        4 | complete |
+----+---------+-----------+----------+----------+

所以foreach订单,为购物车中的每件商品添加一个新行。

所以我想让一个'客户也买了'从这张桌子。我正在使用MySQL。

我该怎么做?这是我最初想出的:

SELECT * FROM `cart` WHERE `status` = 'complete' AND `productID` = '333' ORDER BY `ts` DESC

但当然这只会向我显示带有该产品ID的行。我真正想要的是包含该产品ID的订单的其他产品。

我该怎么做呢?

4 个答案:

答案 0 :(得分:1)

我可能会在cart表上自我加入这样做:

Select Distinct mapped.productID
  From cart main
  Join cart mapped On main.orderID = mapped.orderID
 Where main.productID != mapped.productID
   And main.productID = 333

答案 1 :(得分:1)

已经有两个正确的答案。我只是想让您了解您展示的productID的顺序(或重要性)。 例如,你可以使用这样的查询,使用购买某个产品ID的次数(除了' ts'):

SELECT `productID`, COUNT(*) AS RC
FROM `cart` 
WHERE `orderID` IN (SELECT `orderID` FROM `cart` WHERE `productid`=333 AND `status` = 'complete' )                      
AND `productID` <> '333' 
GROUP BY  `productID`
ORDER BY RC DESC

答案 2 :(得分:0)

使用可以使用这样的IN过滤器。

df = df[gs_bool]
print (df)
   A  B  C
0  0  a  x
1  1  b  x
2  2  a  x
3  3  c  z
4  4  c  z
6  6  b  x

答案 3 :(得分:-1)

如果您希望产品的顺序相同,则可以orderID查询,例如:

SELECT * 
FROM cart
WHERE orderID = 3443
AND productID <> 333;

这将为您提供包含在同一订单中的所有other个产品。