- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
my $arr=[];
my $res=$dbr->selectrow_arrayref("SELECT DISTINCT obj.value
FROM obj
INNER JOIN ...
INNER JOIN ...
INNER JOIN ...
INNER JOIN ...
INNER JOIN ...
WHERE .....
сложный, но не интересный SQL-запрос к наскольким таблицам под лям записей в каждом
...");
arm_ls.lsid IN ($ls_str)
foreach $row (@$res)
{
push(@$arr,$row->[0]) if (!grep(/^$row->[0]$/,@$arr));
}
my $sum=@$arr;
return $sum;
Нашел тут в одном проекте. Теперь хочу поделиться с вами великолепным способом получения числа уникальных значений из таблицы.
В этот способ научит вас использовать всю мощь перла.
gnatyna 26.08.2010 14:38 # +2
Oleg_quadro 26.08.2010 20:04 # +1
bildja 26.08.2010 14:39 # 0
selectrow_arrayref - вернёт одну строку в виде ссылки на массив..
foreach $row (@$res) - тогда тут $row будет каждой записью в этом массиве..
Тогда $row->[0] должно вроде ж ексепшн выкинуть?
arm_ls.lsid IN ($ls_str) - а это что такое вообще?
Dummy00001 26.08.2010 16:09 # +2
"arm_ls.lsid IN ($ls_str)" скорее всего часть сиквела.
а selectrow_arrayref() должно быть по тексту selectall_arrayref().
Mihard 26.08.2010 16:00 # 0
Вообщем выбираем все уникальные значения по запросу, дальше через foreach grep'ом еще раз проверяем уникальность и выводим количество "действительно уникальных" элементов.
12я строка выпала из оригинального запроса, бывает.