Autor | Zpráva | ||
---|---|---|---|
anonymni Profil * |
#1 · Zasláno: 28. 5. 2012, 08:27:10
Dobrý deň,
mám problém ako spraviť výpis posledných 20 zápisov v mysql databáze s hodnotami. Ide o to, mám script, ktorý zapisuje do mysql IP adresy a ping na adresu každých 5 minút. Potrebujem spraviť aby sa pingy na rovnakej adrese sčítali. Čiže: každých 5 min script zapíše do mysql: IP | ping 10.1.1.1 | 1.200 10.1.1.2 | 1.300 10.1.1.3 | 1.400 10.1.1.4 | 1.500 10.1.1.5 | 1.600 Ďalších 5 min script zapíše do mysql znova podobné údaje, čiže sa bude opakovať to zapisovanie (IPčiek je cca. 200) Teda potrebujem nejak vytiahnuť IP adresy a priradiť k nej výsledok. Hodnoty (ping) sa musia sčítať, potom sa spraví priemer za 1 hodinu (ale to si už budem vedieť spraviť). Ďakujem |
||
ShiraNai7 Profil |
#2 · Zasláno: 28. 5. 2012, 08:28:58
něco jako:
SELECT ip,SUM(ping) ping_soucet FROM tabulka GROUP BY ip |
||
panther Profil |
#3 · Zasláno: 28. 5. 2012, 08:30:19
anonymni:
„mám problém ako spraviť výpis posledných 20 zápisov v mysql“ select ... order by id/time asc „Potrebujem spraviť aby sa pingy na rovnakej adrese sčítali.“ to mi přijde jako úplně odlišný požadavek ne ten výše: update table set ping where IP = ...
|
||
anonymni Profil * |
#4 · Zasláno: 28. 5. 2012, 08:45:58
ShiraNai7:
Áno presne to, ale potrebujem len posledných 12 zápisov pre jednu IP. (12 výsledkov merania x každých 5 min = 60 min/1hod) Lebo ak by som to nechal takto, bude to sčítavať všetky hodnoty a tým by mi vyšiel zlý výsledok za hodinu. Vyššie som písal 20 posledných ale som myslel na niečo iné a 20 x 5 = 100 min nie 1 hod. :) panther: To čo si mi poslal ty nechcem. Do MySQL sa zapisuje každých 5 min. IP + hodnota pingu. Tie IP sú rovnaké (niekedy sa tam pridá nová, ale to len sem-tam), líši sa len hodnota pingu. Čiže pre jednotlivú IP adresu zlúči |
||
panther Profil |
#5 · Zasláno: 28. 5. 2012, 08:52:35
anonymni:
špatně jsem tě pochopil, resp. četl. |
||
Kajman Profil |
#6 · Zasláno: 28. 5. 2012, 09:01:28
anonymni:
„Áno presne to, ale potrebujem len posledných 12 zápisov pre jednu IP.“ Ale z té tabulky nejde poznat, které jsou poslední. Nejlepší bude, když si zavedete sloupec s časem měření. Pak k tomu dotazu stačí přidat podmínku na poslední hodinu do where. |
||
anonymni Profil * |
#7 · Zasláno: 28. 5. 2012, 09:04:47
Kajman:
Áno tabuľku datum vo formáte datetime tam mám. |
||
Kajman Profil |
#8 · Zasláno: 28. 5. 2012, 09:39:25
„Pak k tomu dotazu stačí přidat podmínku na poslední hodinu do where.“
|
||
anonymni Profil * |
#9 · Zasláno: 28. 5. 2012, 09:47:49
Kajman:
Už ma to asi napadlo :) SELECT ip,SUM(ping) ping_soucet FROM tabulka GROUP BY ip WHERE datum < aktualnycas and datum > aktualnycas - 1 hod. Takto nejak, že? |
||
nemeja Profil |
#10 · Zasláno: 28. 5. 2012, 09:53:41
SELECT * FROM tabulka WHERE IP = "10.1.1.1" LIMIT 0,12 takhle bych to napsal ja |
||
anonymni Profil * |
#11 · Zasláno: 28. 5. 2012, 09:55:04
nemeja:
Len IP nie je jedná ale viacero, čiže by to muselo ísť do premennej nejak. |
||
nemeja Profil |
anonymni:
„Len IP nie je jedná ale viacero, čiže by to muselo ísť do premennej nejak.“ Tak to je jasný, jen jsem tě chtěl naťuknout. Tak tady to máš v PHP <?php $ip = "10.1.1.1"; $sql = "SELECT * FROM tabulka WHERE ip = '". $ip ."' LIMIT 0,12"; $vysledek = mysql_fetch_assoc($sql); ?> |
||
anonymni Profil * |
#13 · Zasláno: 29. 5. 2012, 09:29:24 · Upravil/a: anonymni
Troška som sa s tým vyhral, ideálne by bolo spraviť niečo takéto:
SELECT ip, SUM(ping) ping_soucet FROM ping GROUP BY ip WHERE datum >= DATE_SUB(NOW(), interval 1 hour) ale dáva mi chybu: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE datum >= DATE_SUB(NOW(), interval 1 hour) LIMIT 0, 30' at line 1 Viete mi nejak s tým pomôcť? Tak som to vyriešil :D GROUP BY ip musí ísť na koniec riadku SELECT ip, SUM(ping) ping_soucet FROM ping WHERE datum >= DATE_SUB(NOW(), interval 1 hour) GROUP BY ip |
||
Časová prodleva: 12 let
|
0