Как l oop над данными и создать структуру с уникальными ключами? - PullRequest
0 голосов
/ 08 мая 2020

У меня есть набор данных, который выглядит следующим образом:

 PRODUCT_ID PRODUCT_DESC TYPE_ID
    2          Meat         1
    2          Pasta        2
    2          Milk         3
    2          Bread        4
    2          Fruit        11
    3          Meat         1
    3          Pasta        2
    3          Milk         3
    3          Bread        4
    3          Herbs        5
    3          Vegetables   6
    3          Beer         7
    3          Wine         8
    3          Brandy       9
    3          Juice        10
    3          Fruit        11
    3          Soda         12
    4          Meat         1
    4          Pasta        2
    4          Milk         3
    4          Bread        4
    4          Fruit        11
    5          Meat         1
    5          Pasta        2
    5          Milk         3
    5          Bread        4
    5          Herbs        5
    5          Vegetables   6
    5          Beer         7
    5          Wine         8
    5          Brandy       9
    5          Juice        10
    5          Fruit        11
    5          Soda         12
    6          Pasta        2
    6          Herbs        5
    6          Vegetables   6
    6          Beer         7
    6          Wine         8
    6          Brandy       9
    6          Juice        10
    6          Soda         12
    7          Pasta        2
    7          Herbs        5
    7          Vegetables   6
    7          Beer         7
    7          Wine         8
    7          Brandy       9
    7          Juice        10
    7          Soda         12

Приведенные выше данные должны быть сгруппированы по идентификатору продукта. Вот пример того, как я хотел бы организовать данные:

PRODUCT ID
2          TYPE_ID      1,2,3,4,11
           PRODUCT_DESC Meat,Pasta,Milk,Bread,Fruit
3          TYPE_ID      1,2,3,4,5,6,7,8,9,10,11,12
           PRODUCT_DESC Meat,Pasta,Milk,Bread,Herbs,Vegetables,Beer,Wine,Brandy,Juice,Fruit,Soda
4          TYPE_ID      1,2,3,4,11
           PRODUCT_DESC Meat,Pasta,Milk,Bread,Fruit
5          TYPE_ID      1,2,3,4,5,6,7,8,9,10,11,12
           PRODUCT_DESC Meat,Pasta,Milk,Bread,Herbs,Vegetables,Beer,Wine,Brandy,Juice,Fruit,Soda
6          TYPE_ID      2,5,6,7,8,9,10,12
           PRODUCT_DESC Pasta,Herbs,Vegetables,Beer,Wine,Brandy,Juice,Soda
7          TYPE_ID      2,5,6,7,8,9,10,12
           PRODUCT_DESC Pasta,Herbs,Vegetables,Beer,Wine,Brandy,Juice,Soda 

В приведенном выше примере элементы данных группируются по идентификатору продукта, а затем создается список для описания и типа продукта. Мне интересно, как лучше всего этого добиться? Я знаю, что одним из способов было бы l oop поверх структуры создания данных и заполнение ключей. Затем во второй итерации проверьте, существует ли ключ в структуре, и добавьте элементы в список.

Это сработает, но, очевидно, я хотел бы по возможности исключить повторение цикла дважды для одного и того же набора данных. Кроме того, мне интересно, можно ли организовать данные в SQL Sybase ASE?

Вот решение, которое я получил в ColdFusion с использованием структуры и массивов:

strProducts = structNew();
for ( row in qryProducts ) {
    if ( !structKeyExists(strProducts , row.product_id) ) {
        strProducts[row.product_id] = {type_id: [row.type_id], product_desc: [row.product_desc]};
    } else {
        arrayAppend(strProducts[row.product_id].type_id, row.type_id);
        arrayAppend(strProducts[row.product_id].product_desc, row.product_desc);
    }
}

Если у кого-нибудь есть предложения о том, как это можно сделать, дайте мне знать. Спасибо.

...