如何从数据库内的数据进行组合

时间:2014-12-09 18:50:30

标签: php logic

我想知道如何从数据库中的数据中组合所有可能性。

Item1,Item2,Item3,Item4和Item5

可以有任意数量的项目,我想要做的是显示所有组合,然后能够操纵它们,要么擦除一行,要么将它们组合成3,4等项目的更多组合。

离。 数据库名称" store" 表名" item"

ItemID        Item  
1             Item1  
2             Item2
3             Item3
4             Item4
5             Item5

以下是2个项目的组合示例,我希望他们将它们组合成3个项目组合。这是用于php编程的。

Item1,Item2  
Item1,Item3  
Item1,Item4  
Item1,Item5  
Item2,Item3  
Item2,Item4  
Item2,Item5  
Item3,Item4  
Item3,Item5  
Item4,Item5  

3 个答案:

答案 0 :(得分:0)

您将要使用SQL Cross Join。您可以设置另一个相同的表或创建临时表,然后在要交叉连接的属性上交叉连接两个表。 select b.item, d.item from itemtable1 b cross join (select * from itemtable2) d

答案 1 :(得分:0)

根据您拥有的项目数量,一些嵌套的foreach循环可能会起到作用:

$arrItems = array("Item1","Item2","Item3",...,"ItemN");

foreach ($arrItems as $v1) {
  foreach($arrItems as $v2) {
    echo $v1 . "," . $v2;
  }
}

您拥有的配对数量与您嵌套的环路数量相对应。其他人可能能够提供带有n嵌套的迭代算法,而无需对嵌套循环进行硬编码。

答案 2 :(得分:0)

你需要自我加入

这是在T-SQL

同样应该在mysql中工作

select t1.Item+','+t2.Item from item t1 join item t2 on t1.ItemID <t2.ItemID order by t1.ItemID,t2.ItemID