⟵ сюдатуда ⟶
  • Учебный курс
  • Создание простых таблиц и полей
  • Коды базовый уровень
  • Селекты и связь между таблицами
  • Настройки таблиц базовый уровень
  • Префильтры базовый уровень
  • Условное форматирование базовый уровень
  • Коды действия базовый уровень
  • Использование всплывающих окон
  • Циклы базовый уровень
  • Роли и пользователи в web
  • Коды продвинутый уровень
  • Как работают сравнения в кодах?
  • Как проверить вхождение одного списка в другой?
  • Как по условиям выключить where
  • У строки добавления нет id
  • Как быстро создавать списки
  • Как взять строку из таблицы и потом получить из нее данные?
  • Что такое списки ассоциированных массивов?
  • Определение названия поля кодом, определение строки кода кодом?
  • Список списков и превращение его в список?
  • Как последовательно перебрать список и дополнить его или перезаписать значения?
  • Как отфильтровать и сортировать список или список ассоциированных массивов?
  • Получение информации о ручных значениях, уровне дерева, селектах
  • Как работает while и var? Замена на listReplace
  • Как оптимизировать выполнение одного и того же кода с передачей в него переменных?
  • Как использовать cond для condition?
  • Как использовать значение предыдущей строки для расчета текущей?
  • Зачем нужен поколоночный пересчет в расчетных и временных таблицах?
  • Как использовать предыдущее значение в кодах и комбинировать ручной ввод и код?
  • Операции над row и rowList
  • Коды действий продвинутый уровень
  • Префильтры продвинутый уровень
  • Настройки полей и таблиц продвинутый уровень
  • Циклы продвинутый уровень
  • Форматирование продвинутый уровень
  • Селект-дерево
  • Выполнения кода действия по расписанию
  • Печать и отправка email
  • Нотификации
  • Взаимодействие по API
  • Адаптивность и секции
  • Графики
  • Вид таблицы панелями и поворот строчной части
  • Анонимные таблицы для неавторизованного доступа
  • Внешние формы для сбора информации
  • Обновление и бэкапирование
  • Дублирование схем и перенос таблиц между базами
  • Консольная утилита bin/totum
  • Как взять строку из таблицы и потом получить из нее данные?

    Как взять сразу несколько полей одним запросом из другой таблицы?

    Давайте рассмотрим такой код:


    =:
    if(condition: $select_1; condition: $select_2; condition: $select_3; then: 10; else: "") select_1: select(table: 'table'; field: 'field_1'; where: 'id' = #num) select_2: select(table: 'table'; field: 'field_2'; where: 'id' = #num) select_3: select(table: 'table'; field: 'field_3'; where: 'id' = #num)

    В этом коде у нас есть 3 обращения к одной и той же строке таблицы table, но к разным полям. Гораздо эффективнее будет взять сразу три поля одним обращением, запомнить их и использовать повторно. Итак делаем:


    =:
    if(condition: $select[field_1]; condition: $select[field_2]; condition: $select[field_3]; then: 10; else: "") ~select: selectRow(table: 'table'; field: 'field_1'; field: 'field_2'; field: 'field_3'; where: 'id' = #num)

    При помощи selectRow мы берем сразу несколько полей из строки.

    ~ используем, что бы результат был запомнен при первом выполнении и последующие два condition повторно не ходили в table.

    Результатом selectRow является row у которого есть 3 значения — field_1, field_2 и field_3. Что бы взять их значения в condition мы используем [].

    Можно ли в selectRow передать список полей кодом?

    Да, есть параметр fields, куда мы можем передать автоматически сформированный список полей.

    Например если мы хотим взять значения всех колонок, то мы можем их получить из таблицы Состав таблиц:


    =:
    selectRow(table: 'table'; fields: $sel; where: 'id' = #num) sel: selectList(table: 'tables_fields'; field: 'name'; where: 'table_name' = "table"; where: 'category' = "column")

    Как обратиться к элементу строки, которую мы получили кодом?

    Через []$select[key].

    В квадратных скобках могут быть использованы все стандартные обращения тотум:


    e1:
    $select[$value] value: "field_1" e2: $select[#value] // Значение поля value — field_2 e3: $select[$#nf] e4: $select[$$row] row: "key" key: "field_3" ~select: selectRow(table: 'table'; field: 'field_1'; field: 'field_2'; field: 'field_3'; where: 'id' = #num)

    Какова разница по нагрузке между несколькими select и selectRow

    Происходит разное количество обращений к базе данных. Таким образом однократное обращение selectRow выигрывает по скорости.

    Будет ли выигрыш по скорости работы если забыть поставить ~ ?

    Нет. Если не зафиксировать значение при первом обращении количество обращений к базе данных будет таким же как и при использовании нескольких select.