MySQL kysymys

Sql My

Eli on kaksi taulua ”temps” ja ”tempstats”. Kerran vuorokaudessa luetaan antureiden antamat tiedot ”temps” taulusta, lasketaan arvot ja tallennetaan tulokset ”tempstats” tauluun.

Saako tuo jotenkin yksinkertaistettua? Tehtyä esim yhdellä SQL-lausekkeella?

INSERT INTO tempstats (tmp_date) VALUE (CURDATE());
UPDATE tempstats SET sensor1_min = (SELECT MIN(temp) FROM temps WHERE DATE(`datetime`) = CURDATE() and sensor = 0) WHERE (tmp_date = CURDATE());
UPDATE tempstats SET sensor1_max = (SELECT MAX(temp) FROM temps WHERE DATE(`datetime`) = CURDATE() and sensor = 0) WHERE (tmp_date = CURDATE());
UPDATE tempstats SET sensor1_avg = (SELECT AVG(temp) FROM temps WHERE DATE(`datetime`) = CURDATE() and sensor = 0) WHERE (tmp_date = CURDATE());
UPDATE tempstats SET sensor2_min = (SELECT MIN(temp) FROM temps WHERE DATE(`datetime`) = CURDATE() and sensor = 1) WHERE (tmp_date = CURDATE());
UPDATE tempstats SET sensor2_max = (SELECT MAX(temp) FROM temps WHERE DATE(`datetime`) = CURDATE() and sensor = 1) WHERE (tmp_date = CURDATE());
UPDATE tempstats SET sensor2_avg = (SELECT AVG(temp) FROM temps WHERE DATE(`datetime`) = CURDATE() and sensor = 1) WHERE (tmp_date = CURDATE());

Taulut:

temps (id, datetime, temp, sensor)
tempstats (id, tmp_date, sensor1_min, sensor1_max, sensor1_avg, sensor2_min, sensor2_max, sensor2_avg)

1

221

    Vastaukset 1

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Tyhmeliininen

      Niin saanenko kysyä miksi haluat laskea noi tiedot toiseen tauluun?

      Jos sinulla ei ole tietokannassa satoja miljoonia rivejä niin moinen on ihan turhuutta. Yksinkertaiset laskutoimitukset tehdään kyselyssä.

      Tällee pitäisi toimia

      SELECT datetime,
      MIN(temp) AS minimi,
      MAX(temp) AS maksimi,
      AVG(temp) AS keskiarvo,
      sensor
      FROM temps
      WHERE DATE(datetime) = CURDATE() AND sensor IN (0, 1)
      GROUP BY sensor

      Toi siis hakee tänpäivän minimin, maksimin ja keskiarvon sensoreilta 0 ja 1. Jos välttämättä haluat tiedot toiseen tauluun niin insertaat ton kyselyn.

      "tempstats (id, tmp_date, sensor1_min, sensor1_max, sensor1_avg, sensor2_min, sensor2_max, sensor2_avg) "

      Huono rakenne, tempstats (id, tmp_date, sensor_min, sensor_max, sensor_avg, sensor) parempi. Jos tulevaisuudessa hankit lisää sensoreita niin kohta sinun tavallasi taulussa sarakkeita todella paljon joista monessa tyhjää tietoa, sikti tieto tallennetaan rivettäin.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Mitä tapahtuu?

      Mitä tapahtuu Humalojalla? Poliiseja talon ympärillä ja paljon ihmisiä pitkin pihoja???
      Haapavesi
      48
      2269
    2. Suomi on viittä vaille sodassa Venäjän kanssa...

      ...syynä tähän on kokoomuslainen presidenttimme Stubb. Hän on ainoa eurooppalaisen maan johtaja, joka kärkkäästi ja taha
      Maailman menoa
      702
      1499
    3. Miksi et lähesty minua

      Jos kerran kaipaat, mies? Mitä pelkäät?
      Ikävä
      106
      1178
    4. Mitä nyt haluaisit kysyä kaivatultasi?

      Tässä hetkessä tai menneestä?
      Ikävä
      131
      1067
    5. Olen vähän epävarma siitä, oletko kiltti

      Nainen, ensivaikutelma oli, että olet tosi hyväsydäminen eli siinä mielessä harvinaisuus. Eli et mene virran mukana, etk
      Ikävä
      89
      963
    6. Mikä hänessä

      Saa sut kuumaksi?
      Ikävä
      71
      913
    7. Kuka om uusi kylän mies?

      Ajelee polkupyörällä. Vaalea, melkein kalju. Ilmestyi katukuvaan tänä kesänä. Viettää aikaa kauppojen tuulikaapeissa. Ku
      Suomussalmi
      16
      744
    8. oot mun silmissä

      Vain äärettömän nolo. Anna olla jo 😂
      Ikävä
      116
      708
    9. Taidan olla pelkuri

      Kun en uskalla edes kysyä sulta 😳
      Ikävä
      33
      694
    10. Henkilöauto ajoi puuhun Suomussalmella

      Henkilöauto ajoi puuhun Suomussalmen torin laitamilla. Poliisi epäilee tutkivansa tapausta. Silminnäkijä
      Suomussalmi
      23
      608
    Aihe