Autor Zpráva
mysql_anonym
Profil *
Mám tabulku se strukturou

Cas | Hodnota
-------------------
125 | 10
130 | 12
135 | 24

a potřeboval bych získat výpis
Cas_od | Cas_do | Rozdíl
---------------------------------
125 | 130 | 2
130 | 135 | 12

Neví někdo jak v MySQL ?
juriad
Profil
Čím je dané, které řádky se budou odečítat? Ty, které se liší v čase o 5?
Upozorňuji, že mysql nemusí uchovávat záznamy v žádném pořadí, nespoléhej na to.
Upozorňuji, že vhodný datový typ pro ukládání času není ani číslo, ani řetězec.

SELECT t1.cas as 'cas od', t2.cas as 'cas do', t2.hodnota - t1.hodnota as 'rozdil' FROM tablka t1, tabulka t2 WHERE t1.cas + 5 = t2.cas
mysql_anonym
Profil *
No lišit se v čase nemusí o 5.
Odečítat by se měli po sobě jdoucí řádky, pokud provedu ORDER BY cas DESC / ASC
juriad
Profil
určitě se ti bude hodit:
Některé časteji řešené dotazy pro MySQL - FAQ » Číslování řádků přímo v mysql

snad by mohlo fungovat, ale rychlost ehm, ehm:
select 
    s1.cas, s2.cas, s2.hodnota-s1.hodnota
from 
    (select @radek1:=@radek1+1 rownum, t.* from (select @radek1:=0) r, tabulka t order by t.cas) s1, 
    (select @radek2:=@radek2+1 rownum, t.* from (select @radek2:=0) r, tabulka t order by t.cas) s2 
where 
    s1.rownum+1 = s2.rownum
také bys mohl vytvořit view, obsahující záznamy z tabulka setřízené a doplněné o číslo řádku a provádět select nad tím view

možná by bylo lepší počítat rozdíly mimo databázi, až na místě, kde se s nimi pracuje
databáze obecně pracují s relacemi a relace mezi dvěma po sobě jdoucími řádky je taková chlupatá
Kajman
Profil
Možná by bylo o chlup rychlejší
select @stary_cas cas_od, @stary_cas:=cas cas_do, -(@stara_hodnota-@stara_hodnota:=hodnota) rozdil
from (select @stary_cas:=0, @stara_hodnota:=0) r, tabulka
order by cas

ale také bych to řešil mimo db.
mysql_anonym
Profil *
Ok.. díky.. vyřeším to mimo DB

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:

0