Autor Zpráva
anonymni
Profil *
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
něco jako:
SELECT ip,SUM(ping) ping_soucet FROM tabulka GROUP BY ip
panther
Profil
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 *
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
anonymni:
špatně jsem tě pochopil, resp. četl.
Kajman
Profil
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 *
Kajman:
Áno tabuľku datum vo formáte datetime tam mám.
Kajman
Profil
Pak k tomu dotazu stačí přidat podmínku na poslední hodinu do where.
anonymni
Profil *
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
SELECT * FROM tabulka WHERE IP = "10.1.1.1" LIMIT 0,12

takhle bych to napsal ja
anonymni
Profil *
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 *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: