Ids
Материал из Eludia.
Описание
Формирует для заданной выборки (ссылки на список хэшей, как правило, получаемой как результат sql_select_all или sql_select_all_cnt) список id, пригодный для подстановки в SQL-выражение 'IN ()', а также индекс: хэш, ключами которого являются те же значения id, а значениями — ссылки соответствующие на хэши, составляющие выборку. Такую комбинацию можно эффективно применять при вычислении статистических данных, относящихся к малому подмножеству большой таблицы. Типичная ситуация для применения данной функции: экран-реестр с постраничной нарезкой.
По умолчанию уникальным номером записи считается компонента с именем 'id', пустым списком id — скаляр '-1', а индекс набирается в пустой анонимный хэш. Всё это можно переопределить опциями id, empty и idx соответственно.
Синопсис (Perl5)
($item -> {records}, $item -> {cnt}) = sql_select_all_cnt ("SELECT ... LIMIT 0, 50");
my ($ids, $idx) = ids ($item -> {records});
sql_select_loop (
"SELECT ... WHERE id IN ($ids)",
sub {$idx -> {$i -> {id}} -> {sum} = $i -> {sum}},
);
my ($ids, $idx) = ids ($item -> {records}, {
field => 'ord',
empty => '0',
idx => $some_existing_hashref,
});
