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

C++ JAVA
Post Reply
User avatar
DevNull
Много Редовен
Много Редовен
Posts: 1541
Joined: Fri Mar 02, 2007 11:12 pm
Answers: 104
Location: София
Contact:

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

Post by DevNull » Fri Mar 27, 2015 11:53 am

Здравейте.

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

Разполагам с огромна БД с ип адреси от цял свят, които са разделени по хостове във вид 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)

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3295
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 126

Post by dakata__92 » Fri Mar 27, 2015 12:39 pm

Нещо не схванах. Имаш 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++ примерно докато си правиш проверките за вида на ип-адресът и броя на хостовете.

User avatar
DevNull
Много Редовен
Много Редовен
Posts: 1541
Joined: Fri Mar 02, 2007 11:12 pm
Answers: 104
Location: София
Contact:

Post by DevNull » Fri Mar 27, 2015 12:47 pm

Може би наистина не успях да обясня точно какво искам да направя за това ще дам пример само с един запис.

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

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

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

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

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

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

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

User avatar
DevNull
Много Редовен
Много Редовен
Posts: 1541
Joined: Fri Mar 02, 2007 11:12 pm
Answers: 104
Location: София
Contact:

Post by DevNull » Fri Mar 27, 2015 1:10 pm

След малко борба и ровене в нета успях да постигна желаната цел.

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

Code: Select all

SELECT sum(ip_end-ip_start) as Total FROM table

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


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

Post Reply