-
Notifications
You must be signed in to change notification settings - Fork 9
ids
do- edited this page Jan 21, 2018
·
2 revisions
Формирует для заданной выборки (ссылки на список хэшей, как правило, получаемой как результат sql_select_all или sql_select_all_cnt) список id, пригодный для подстановки в SQL-выражение 'IN ()', а также индекс: хэш, ключами которого являются те же значения id, а значениями — ссылки соответствующие на хэши, составляющие выборку.
Такую комбинацию можно эффективно применять при вычислении статистических данных, относящихся к малому подмножеству большой таблицы.
По умолчанию уникальным номером записи считается компонента с именем 'id', пустым списком id — скаляр '-1', а индекс набирается в пустой анонимный хэш. Всё это можно переопределить опциями id, empty и idx соответственно.
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,
});