从两行查找公共数据,数据用逗号分隔

时间:2014-05-04 06:25:18

标签: php mysql

我是php的新学习者。我面临着解决以下问题的问题 我有下表

--------------------------------------
Items        T_id
--------------------------------------
I1--------   T1,T4,T5,T7,T7,T8,T9  
I2--------   T1, T2, T3, T4, T6, T8, T9  
I3--------   T5, T6, T7, T8, T9  

现在我想从两行中找到常用项目,数据用逗号分隔。

--------------------------------------
Items        T_id
--------------------------------------
I1,I2-----   T1,T4,T8,T9  
I2,I3-----   T6,T8,T9  

还想查找三行的常见交易ID

--------------------------------------
Items        T_id
--------------------------------------
I1,I2,I3--   T8,T9  

任何人都有关于上述的想法或想法?
请给出答案。

2 个答案:

答案 0 :(得分:2)

该示例显示了一行,如果从数据库查询中提交,则不会对其进行规范化。如果数据在数据库中,则第一步是对其进行标准化,然后您可以使用内部联接。

否则您可能需要检查array_intersect documentation并将其迭代地应用于您的身上 行。

  • 将第一行和第二行放入数组中(您可以使用explode)
  • 计算其交点(将其命名为 rowIntersection
  • 将第三行放入数组
  • 计算与 rowIntersection
  • 的交集
  • 并重复直到你不在行

最后使用“,”作为分隔符来破坏结果数组。

此致

答案 1 :(得分:0)

您可以尝试使用

$sql=select * from table;

$arr=array();
while($row=mysql_fetch_assoc($sql)){
    $arr[]=explode(',',$row['T_id']);
}

$arr_merge=array();
foreach($arr as $value){
    $arr_merge[]=array_merge($arr_merge,$value)
}

$arr_val[]=array_intersect($arr_merge);