Mysql 找到三种产品之间的关系
我正在使用PHP和MySQL 如果我有以下表格Mysql 找到三种产品之间的关系,mysql,sql,Mysql,Sql,我正在使用PHP和MySQL 如果我有以下表格 items ---- |order_id|sku| |------------| | 1 | A | | 1 | B | | 1 | C | | 1 | D | | 1 | E | | 2 | B | | 2 | C | | 2 | D | | 3 | D | | 3 | E | | 3 | F | | 4 | A | |
items
----
|order_id|sku|
|------------|
| 1 | A |
| 1 | B |
| 1 | C |
| 1 | D |
| 1 | E |
| 2 | B |
| 2 | C |
| 2 | D |
| 3 | D |
| 3 | E |
| 3 | F |
| 4 | A |
| 4 | B |
| 4 | C |
| 4 | F |
--------------
我想检索以下信息:
| original_SKU | bought_with_a | bought_with_a | times_bought_together |
|--------------|---------------|---------------|-----------------------|
| A | B | C | 2 |
| B | A | C | 2 |
| B | C | D | 2 |
| C | B | D | 2 |
ETC ETC
我试图计算三种产品一起购买的次数。
这是这个问题的延伸:
您应该采用与该解决方案相同的方法来获得所有三向组合:
SELECT i1.sku as sku1, i2.sku as sku2, i3.sku as sku3, count(*) as bought_together
FROM items i1 join
items i2
on i1.order_id = i2.order_id and i1.sku <> i2.sku join
items i3
on i1.order_id = i3.order_id and i3.sku not in (i1.sku, i2.sku)
GROUP BY i1.sku, i2.sku, i3.sku;
选择i1.sku作为sku1,i2.sku作为sku2,i3.sku作为sku3,一起计算(*)已购买
从项目i1加入
项目i2
在i1.order\u id=i2.order\u id和i1.sku i2.sku连接上
项目13
在i1.order\u id=i3.order\u id和i3.sku不在(i1.sku,i2.sku)上
按i1.sku、i2.sku、i3.sku分组;
通过添加更多连接,您应该能够轻松找到如何将其扩展到更多产品。您应该遵循与该解决方案相同的方法来获得所有三向组合:
SELECT i1.sku as sku1, i2.sku as sku2, i3.sku as sku3, count(*) as bought_together
FROM items i1 join
items i2
on i1.order_id = i2.order_id and i1.sku <> i2.sku join
items i3
on i1.order_id = i3.order_id and i3.sku not in (i1.sku, i2.sku)
GROUP BY i1.sku, i2.sku, i3.sku;
选择i1.sku作为sku1,i2.sku作为sku2,i3.sku作为sku3,一起计算(*)已购买
从项目i1加入
项目i2
在i1.order\u id=i2.order\u id和i1.sku i2.sku连接上
项目13
在i1.order\u id=i3.order\u id和i3.sku不在(i1.sku,i2.sku)上
按i1.sku、i2.sku、i3.sku分组;
通过添加更多连接,您应该能够很容易地找到如何将此扩展到更多产品。扩展昨天的-
请参见扩展昨天的-
请参见您正在寻找纯SQL解决方案吗?您正在寻找纯SQL解决方案吗?这是可行的,但建议@GordonLinoff的答案这是可行的,但建议@GordonLinoff的答案投票给
不在
不在不在不在中