перебор всех возможных комбинаций по маске

Тема в разделе "Как сделать...", создана пользователем chang, 29 дек 2010.

Статус темы:
Закрыта.
  1. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    Здравствуйте

    есть таблица "категории" и "подкатегории"
    [​IMG]


    также есть еще 2 таблицы связанные между собой как 1->*
    [​IMG]


    в таблице table_templete поле maska принимает значения вида "{1}" или "{1|2|3} {3} {2|3|4|22}" или любые другие комбинации

    числами здесь являются айдишники из таблицы категории


    нужно по этой маске генерировать оригинальные комбинации значений для таблицы Table1 следующим образом.

    1) взять айди категории ( один из имеющихся в фигурных скобках )
    2) по айди категории достать значение из таблицы подкатегории
    3) все это дело поместить в Table1-> value

    предположим что имеются следующие данные в таблицах:
    Код:
    [B]категории[/B]
    --------------------
    [I]id[/I]
    1
    2
    
    ==========================
    
    [B]подкатегории[/B]
    id  id_категории  значение 
    1         1          qwe_1
    2         1          qwe_2
    3         1          qwe_3
    4         2          йцу_1
    5         2          йцу_2
    
    ===============================
    
    [B]table_templete[/B]
    
    id      maska
    1       {2}{1}
    
    ==============================
    
    соответственно в Table1 нужно  нагенерировать следующие значения 
    Table1
    id   id_templete  value
    1      1            йцу_1 qwe_1
    1      1            йцу_1 qwe_2
    1      1            йцу_1 qwe_3
    1      1            йцу_2 qwe_1
    1      1            йцу_2 qwe_2
    1      1            йцу_2 qwe_3
    
    

    как такое лучшим образом реализовать? чтоб исключить дублирование результирующего значения ну и чтоб работало поприличней.

    желательно чтоб алгоритм за 1 запуск генерировал лишь 1 значение ( для таблицы Table1), но на крайний случай и сойдет чтоб он генерил всевозможные варианты за один запуск.

    Буду благодарен за любые идеи и ссылки.
    Всех с наступающим.
     
Статус темы:
Закрыта.