Sql select all hash
Материал из Eludia.
Описание
Извлекает выборку, подобно sql_select_all, однако не в список, а в хэш, ключами которого являются значения поля id. Эту процедуру удобно применять для извлечения небольших словарей, которые требуются по ходу обработки выборок в тех случаях, когда явный JOIN по каким-либо причинам оказывается неэффективным.
В частности, такая ситуация складывается при вычислении статистики
Синопсис (Perl5)
my $cnt_docs = sql_select_all_hash (
"SELECT id_rubric AS id, COUNT(*) AS cnt FROM docs WHERE fake = 0 AND id_rubric IN ($ids) GROUP BY 1"
);
my $cnt_rubs = sql_select_all_hash (
"SELECT parent AS id, COUNT(*) AS cnt FROM rubrics WHERE fake = 0 AND id_rubric IN ($ids) GROUP BY 1"
);
foreach my $i (@rubrics) {
$i -> {cnt_docs} = $cnt_docs -> {$i -> {id}} -> {cnt};
$i -> {cnt_rubs} = $cnt_rubs -> {$i -> {id}} -> {cnt};
}
