我有一个购物车'表格如下:
+----+---------+-----------+----------+----------+
| 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的订单的其他产品。
我该怎么做呢?
答案 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
个产品。