Въпрос : Изчисляване на обща сума от записи.

DevNull

Registered
Здравейте.

Въпроса ми може да се окаже малко странен но тъй като не мога да се сетя как точно да стане реших да попитам вас.

Разполагам с огромна БД с ип адреси от цял свят, които са разделени по хостове във вид ip2long .

Общо записите са 151,327.

За да изчисля колко хоста (IP адреса) има в една мрежа от крайния запис изваждам началния.

Т.е. ако имам IP 172.0.0.0 (2,885,681,152) и 172.15.255.255 (2,886,729,727) , от 172.15.255.255 вадя 172.0.0.0 във формат ip2long или иначе казано:
2,886,729,727 - 2,885,681,152 - така разбирам колко хоста има в тази мрежа.

За всички резултати в тази таблица имам общо 16,777,215 хоста от всичките 151,327 записа. Идеята ми е ако умножа броя на хостовете по броя на записите , дали ще получа тоталния брой на всички ип-та които имам в БД.

Надявам се, че сте ме разбрали правилно x)
 
Нещо не схванах. Имаш 151 327(сто педесет и една хиляди триста двадесет и седем) записа в базата данни. Имаш 51 327 примерно записа от видът 172.0.0.0 което означава, че са ти от един хост(1) и от вида 172.15.255.255 имаш 90 000 записа хост(2). От общият брой на записите вадиш сбора на известните хостове по вид тоест 151 327 - (51 327+90 000) = 10 000 неизвестни примерно. Ако всичките са ти известни то цифрата ще е равна на 0. Не схващам какво имаш в предвид с това да разбереш тоталният брой на всичките ип адреси. Нали си направил count() на полетата и вече знаеш броят на записите. Искаш да кажеш, че не във всеки има ип или някъде имаш по два. Дай по-добро разяснение, че и цифрите с тези запетайки много омешват при положение, че ще ти е най-лесно да си работиш с целочислени числа от типа int. Правиш един цикъл със заявка и почваш да броиш с брояч $i++ примерно докато си правиш проверките за вида на ип-адресът и броя на хостовете.
 
Може би наистина не успях да обясня точно какво искам да направя за това ще дам пример само с един запис.

Да вземем за пример първия ред.

Имам IP Range ot 0.0.0.0 до 0.255.255.255 .

Във ip2long формат това е от 0 до 16777215

Което означава, че в този Range имам 16777215 ip адреса.

Всеки IP Range е различен

Моята идея е да сумирам общия брой на IP адресите от всички IP Range.

Идеята ми е когато се прави проверка за дадено IP, най-отгоре на страницата да показва колко IP адреса съдържа БД.
 
След малко борба и ровене в нета успях да постигна желаната цел.

Идеята е да сумирам още във SQL заявката


Код:
SELECT sum(ip_end-ip_start) as Total FROM table


След това правя едно while и в него извеждам echo $row['Total']


Все пак получаваш точката защото си единствения отговорил в темата.
 

Back
Горе