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 | |

我正在使用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 | 
|   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的答案投票给
不在
不在不在不在中