Php 我可以在Mysql中选择哪些产品对?

Php 我可以在Mysql中选择哪些产品对?,php,mysql,sql,select,Php,Mysql,Sql,Select,订单表 有一个orders表,其中user_id是用户id,item_id是订购产品的id。需要获得不同用户订购的成对货物样本,即以下结果: 结果表 我不明白该怎么做?谢谢各位如果您想获得由多个客户订购的产品对2产品的列表,那么 通过在表自身内部子查询上自联接表,按客户创建产品对列表 再次自行加入此列表,但针对不同的客户 我将创建以下查询: select distinct (select t1.user_id, t1.item_id as item_id1, t2.item_id as

订单表

有一个orders表,其中user_id是用户id,item_id是订购产品的id。需要获得不同用户订购的成对货物样本,即以下结果:

结果表


我不明白该怎么做?谢谢各位

如果您想获得由多个客户订购的产品对2产品的列表,那么

通过在表自身内部子查询上自联接表,按客户创建产品对列表

再次自行加入此列表,但针对不同的客户

我将创建以下查询:

select distinct
    (select t1.user_id, t1.item_id as item_id1, t2.item_id as item_id2
     from table t1
     inner join table t2 on t1.user_id=t2.userid and t1.item_id<t2.item_id) l1
inner join
    (select t1.user_id, t1.item_id as item_id1, t2.item_id as item_id2
     from table t1
     inner join table t2 on t1.user_id=t2.userid and t1.item_id<t2.item_id) l2
     on l1.user_id<>l2.user_id and l1.item_id1=l2.item_id1 and l1.item_id2=l2.item_id2

t1.item_id假设您有一个items表,那么不需要子查询就可以完成这项工作:

i1和i2之间的连接生成所有项目对的列表,第一个项目小于第二个项目,以防止重复

加入o1会带来第一个项目的订单id

加入o2会带来第二个项目的订单id,并确保订单id与第一个项目相同

group by统计包含这两个项目的订单数


having子句确保至少有两个。

这背后的逻辑是什么?你到底想做什么?如果你想让别人为你写代码,你必须更好地解释你想做什么。哦,谢谢。我有点理解。但对我来说仍然很难。再次感谢你,你帮了我的忙。你太棒了!!!
select i1.item_id, i2.item_id, count(*)
from items i1 join
     items i2
     on i1.item_id < i2.item_id join
     orders o1
     on o1.item_id = i1.item_id join
     orders o2
     on o2.item_id = i2.item_id and
        o2.order_id = o1.order_id
group by i1.item_id, i2.item_id
having count(*) > 1;