jestli jsem to spravne pochopil, tak by mohlo byt resenim vycist tabulku 2 a k ni pripojit tabulku 1 tak, aby byly teploty tabulky 1 rozsekane na hodiny. vyuzitim vnoreneho dotazu najdu ke kazdemu radku v tab2 nejvyssi mensi nebo stejnou casovou hodnotu v tab1. podle nalezene hodnoty pripojim radek z tab1 (pokud hodnota nebyla nalezena, objevi se ve sloupcich teplota zmenova a datum_posledni zmeny hodnoty NULL ... zajisteno pomoci LEFT JOIN) takto v mysql:
select t2.datum as hodina, t2.proc as teplota_hodinova, t1.teplota as teplota_zmenova, t1.datum as datum_posledni_zmeny
FROM tab2 t2
LEFT JOIN tab1 t1 ON t2.datum >= t1.datum and t1.datum= (SELECT t1tmp.datum FROM tab1 t1tmp WHERE t1tmp.datum <= t2.datum ORDER BY t1tmp.datum DESC LIMIT 1)
v MS SQL by melo byt nejak takto, ale nedavam za to ruku do ohne:
select t2.datum as hodina, t2.proc as teplota_hodinova, t1.teplota as teplota_zmenova, t1.datum as datum_posledni_zmeny
FROM tab2 t2
LEFT JOIN tab1 t1 ON t2.datum >= t1.datum and t1.datum= (SELECT TOP 1 t1tmp.datum FROM tab1 t1tmp WHERE t1tmp.datum <= t2.datum ORDER BY t1tmp.datum DESC)
kdyz jsem pridal do tab2 nasledujici dva zaznamy 1.1.2017 5:00 95 1.2.2017 6:00 96 tak mi dotaz vyhodil toto:
hodina teplota_hodinova teplota_zmenova datum_posledni_zmeny
2017-01-01 00:00:00 78 10 2017-01-01 00:00:00
2017-01-01 01:00:00 77 10 2017-01-01 00:00:00
2017-01-01 02:00:00 78 10 2017-01-01 00:00:00
2017-01-01 03:00:00 76 10 2017-01-01 00:00:00
2017-01-01 04:00:00 77 10 2017-01-01 00:00:00
2017-01-01 05:00:00 95 10 2017-01-01 00:00:00
2017-01-01 06:00:00 96 11 2017-01-01 06:00:00
|