Какая функция используется для сложения по строкам двух rowList?
Если нужно строки одного rowList
сложить со строками другого rowList
, то они складываются как и list
при помощи listAdd:
=: listAdd(list: $row1; list: $row2)
row1: selectRowList(table: 'table_1'; field: 'field_1'; field: 'field_2')
row2: selectRowList(table: 'table_2'; field: 'field_1'; field: 'field_2')
Часто это требуется в кодах селектов:
=: listAdd(list: $row1; list: $row2)
row1: selectRowListForSelect(table: 'table_1'; field: 'title'; bfield: 'uiid')
row2: selectRowListForSelect(table: 'table_2'; field: 'title'; bfield: 'uiid')
Какая функция используется для сложения по колонкам двух rowList?
rowListAdd — используется, когда вам нужно добавить колонку со значениями в существующий rowList
.
Колонка со значениями передается в виде list
с нужным вам порядком элементов.
Именно в этом порядке они будут добавлены в rowList
, поэтому задавайте сортировки. Если сортировок нет, то от раза к разу результат будет отличаться:
=: rowListAdd(rowlist: $rowList; field: "field_3" = $list)
rowList: selectRowList(table: 'table_1'; field: 'field_1'; field: 'field_2'; order: 'field_1' asc)
list: selectList(table: 'table_2'; field: 'field_3'; order: 'field_1' asc)
Если нужно добавить не одну колонку:
=: rowListAdd(rowlist: $rowList_1; rowlist: $rowList_2)
rowList_1: selectRowList(table: 'table_1'; field: 'field_1'; field: 'field_2'; order: 'field_1' asc)
rowList_2: selectRowList(table: 'table_2'; field: 'field_3'; field: 'field_4'; order: 'field_1' asc)
Как из row получить список значений?
Если у вас есть row
, нужен list
из значений, которые в нем содержаться, то это делает rowValues:
Например возьмем значения полей в list
из 5 полей в текущей строке:
=: rowValues(row: $row)
row: selectRow(table: $#ntn; field: 'field_1'; field: 'field_2'; field: 'field_3'; field: 'field_4'; field: 'field_5'; where: 'id' = #id)
Как из row получить список ключей?
Есть аналогичная функция rowKeys, которая берет названия ключей из row
.
Обычно она используется совместно с listFilter, который может фильтровать и row
(те оставить только те колонки, которые отвечают условию):
Получим названия всех полей в которых значение больше 10
:
=: rowKeys(row: $filter)
filter: listFilter(list: $row; key: "value" > 10)
row: selectRow(table: $#ntn; field: 'field_1'; field: 'field_2'; field: 'field_3'; field: 'field_4'; field: 'field_5'; field: 'field_6'; field: 'field_7'; field: 'field_8'; field: 'field_9'; field: 'field_10'; field: 'field_11'; field: 'field_12'; where: 'id' = #id)
Усложним эту задачу: например это месяца и нам надо получить номера месяцев в которых значение больше 10.
=: listReplace(list: $keys; action: $new_value; value: "value")
new_value: strReplace(str: $#value; from: "field_"; to: "")
// Чтобы получить номера мы заменяем field_ на пустоту в каждом элементе списка
keys: rowKeys(row: $filter)
// Здесь получится list из строковых имен полей
filter: listFilter(list: $row; key: "value" > 10)
row: selectRow(table: $#ntn; field: 'field_1'; field: 'field_2'; field: 'field_3'; field: 'field_4'; field: 'field_5'; field: 'field_6'; field: 'field_7'; field: 'field_8'; field: 'field_9'; field: 'field_10'; field: 'field_11'; field: 'field_12'; where: 'id' = #id)
Как из row и rowList удалить колонку?
Эту задачу выполняет rowKeysRemove. Передаете ей row
или rowList
и имена удаляемых колонок.
Если вы передаете rowList
, то нужно будет указать recursive: true
!
Как переименовать ключ колонки в row или rowList?
Задача с переименованием колонок решается при помощи rowKeysReplace.
Если вы передаете rowList
, а не row
, то нужно будет указать recursive: true
!