Autor | Zpráva | ||
---|---|---|---|
mysql_anonym Profil * |
#1 · Zasláno: 27. 1. 2012, 13:20:16
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 |
#2 · Zasláno: 27. 1. 2012, 13:35:10
Čí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 * |
#3 · Zasláno: 27. 1. 2012, 13:44:44
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 |
#4 · Zasláno: 27. 1. 2012, 14:07:20
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 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 * |
#6 · Zasláno: 27. 1. 2012, 14:51:15
Ok.. díky.. vyřeším to mimo DB
|
||
Časová prodleva: 11 let
|
0