Pitäisi yhdistää molemmat taulut näkymään. Taulun a pvm pysyy ennallaan ja jos taulun b data on ajallisti +/- 5min lähellä, niin lasketaan keskiarvo sarakkeille c ja d.
Jos yllämainittu ei onnistu niin vain lähin vastaava aika.
Taulu a:
PVM | a | b | --------------------------- 11-01-2016 22:10 3 4 11-01-2016 22:20 4 4 11-01-2016 22:30 4 4 11-01-2016 22:40 4 4
Taulu b:
PVM | c | d | --------------------------- 11-01-2016 22:08 3 4 11-01-2016 22:11 4 4 11-01-2016 22:12 4 4 11-01-2016 22:22 4 4
Millä tavalla 'Taulu a' ja 'Taulu b' rivit ovat linkissä? Siis millä ehdolla jokin Taulu a:n rivi yhdistetään Taulu b:n riviin? Onko taulujen välillä esimerkiksi jokin id-numero, jota ei ole esimerkeissä näkyvillä?
Kuten Teuro totesi, kysymys on epäselvästi muotoiltu.
Jos kuitenkin tarkoitus on vain hakea b-taulusta kaikki a-tauluun nähden ±5 minuutin päässä olevat jutut ja laskea niistä keskiarvo, ehkä tämä auttaa:
SELECT a.*, SUM(b.c) / COUNT(b.c) AS c_mean, SUM(b.d) / COUNT(b.d) AS d_mean FROM a LEFT JOIN b ON b.time BETWEEN a.time - INTERVAL 5 MINUTE AND a.time + INTERVAL 5 MINUTE GROUP BY a.id
Jos pitää jotenkin tunnistaa, mikä a-taulun riveistä on lähimpänä b-taulun riviä, jotta samaa b-riviä ei tule käsiteltyä moneen kertaan, kyselystä tulee jossain määrin monimutkaisempi.
Toivottavasti ajat ovat taulussasi TIMESTAMP- tai DATETIME-tyyppisinä (ja näin näkyisivät yleensä muodossa 2016-06-22) eivätkä jossain omassa pöljässä tekstimuodossa.
Elikkäs a-taulun arvot pysyvät muuttumattomana ja rinnalle tulee b-taulusta arvot +/- 5min a-taulun aikoihin nähden (keskiarvo tai lähin aika).
Kieltämättä huonosti probleeman kuvasin.
Ja kyllä ajat tulevat ihan YYYY-MM-DD HH:MM:SS muodossa. Esimerkki on vaan ihan hatusta heitetty :D
Esimerkistäsi mikä kolmesta ensimmäisestä Taulu b:n riveistä yhdistetään Taulu a:n rivin 1 kanssa ja miksi? Kaikki kolme riviä osuvat rivin 1 kanssa viiden minuutin säännön nojalla. Rivi kaksi olisi vain minuutin päässä rivi yksi olisi kahden minuutin päässä.
Riviin kaksi Taulu a:a osuu rivi neljä Taulu b:ä, koska 11-01-2016 22:22 on vain kahden minuutin päässä 11-01-2016 22:20 muut ovat yli viiden minuutin päässä. Riveihin kolme ja neljä Taulu a:a ei osu mikään viiden minuutin säännön nojalla, joten riville kolme valitaan ilmeisesti rivi kolme ja riville neljä valitaan myös rivi kolme.
Taulu b:n arvot ovat mittaustuloksia, joita tulee epäsäännöllisesti. Tarkoitus olisi poimia b-taulusta arvot, joilla olisi vaikutusta taulun a-arvoihin. (Eli +/- 5 min a-taulun aikaan).
Tosiaan kuten mainitsit jos monta riviä osuu kohdalle niin keskiarvolla hoidetaan se homma. Ja osumia ei välttämättä aina tosiaan ole.
Tarkennetun kuvauksen perusteella edellä antamani ratkaisun pitäisi olla ihan oikea.
Aihe on jo aika vanha, joten et voi enää vastata siihen.