Как сделать комбинации из данных в базе данных

0

Я хотел бы знать, как я смогу сделать комбинацию всех возможностей из данных в моей базе данных.

Пункт 1, Пункт 2, Пункт 3, Пункт4 и Пункт5

Может быть любое количество элементов, что я хочу сделать, это показать все комбинации, а затем управлять ими, либо стереть строку, либо сделать их более комбинациями из 3, 4 и так далее.

ех. Название базы данных "store" имя таблицы "item"

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

Ниже приведен пример комбинации из двух предметов, я бы хотел, чтобы они превратили их в комбинацию из 3 предметов. Это для программирования php.

Item1,Item2  
Item1,Item3  
Item1,Item4  
Item1,Item5  
Item2,Item3  
Item2,Item4  
Item2,Item5  
Item3,Item4  
Item3,Item5  
Item4,Item5  
Теги:
logic

3 ответа

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
0

В зависимости от количества элементов, которые у вас есть, несколько вложенных циклов foreach могут сделать трюк:

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

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

Количество пар, которое у вас соответствует, соответствует числу циклов, в которые вы входите. Кто-то еще может предложить итерационный алгоритм с n гнездами, без необходимости жесткого кодирования вложенных циклов.

0

Вы захотите использовать SQL Cross Join. Вы можете либо настроить другую таблицу, которая идентична, либо создать временную таблицу, а затем перекрестно присоединить две ваши таблицы к свойствам, которые вы хотите перекреститься. select b.item, d.item from itemtable1 b cross join (select * from itemtable2) d

Ещё вопросы

Сообщество Overcoder
Наверх
Меню