Tietokantaan lisätään 30 min välein arvot, ja tallennetaan sen hetkinen datetime.
Joskus järjestelmä oli alhalla, eikä arvoja pystytty lisäämään. Miten voisin hakea kaikki nämä päivät?
Tietokannan rakenne on:
id (int), paiva (datetime), arvo1 (int), arvo2 (int), jne..
Joskus järjestelmä oli alhalla, eikä arvoja pystytty lisäämään. Miten voisin hakea kaikki nämä päivät?
Tietokannan rakenne on:
id (int), paiva (datetime), arvo1 (int), arvo2 (int), jne..
Vastaukset 5
Vanhimmat
Käsittääkseni ainoa keino on hakea tietyltäväliltä kaikki päivät (ajat) sitten vain katsoa onko kerran 30min lisätty tieto, tämä onnistuu helposti ohjelmointikielelläsi, kun et sitä kerro, niin en osaa auttaa enempää.
Siis pelkällä kyselyllä et sitä selville saa.
Ryhmitellään tiedot päivämäärän mukaan, lasketaan montako arvoa on päivää kohden, ja jos arvo on pienempi kuin 24*2 niin otetaan päivämäärä selectiin.
Näin teoriassa, mutta miten käytännössä, en tiedä.
Eipäs tullut tuo ajatus mieleen, tolleehan se onnistuukin helposti. Tässä on täysin testaamaton sql-lauseke mysliin.
SELECT *, COUNT(id) AS monta
FROM taulukon_nimi
GROUP BY DATE_FORMAT(paiva, "%Y%j")
HAVING monta < 48
"SELECT *" ei taida toimia groupin kanssa.
Tässä on vähän parannettu versio :)
SELECT
DATE_FORMAT( date, '%Y' ) AS vuosi,
DATE_FORMAT( date, '%m' ) AS kuukausi,
DATE_FORMAT( date, '%d' ) AS paiva,
COUNT( id ) AS monta
FROM taulukon_nimi
GROUP BY vuosi, kuukausi, paiva
HAVING monta < 48
LIMIT 0 , 100;
*"SELECT *" ei taida toimia groupin kanssa. *
Miksi ei?
Tolla tähdellähän valitaan vain kaikki sarakkeet näytettäväksi kyselyn tuloksessa, ei se mitenkään groupin toimintaan vaikuta. Tosin tähteähän ei kannata käyttää, vaan parempa luotella tarvittavat sarakkeet, koska kaikkia ei useinkaan tarvita, sekä jos kantaan tulee myöhemmin lisää sarakkeita ne valitaan turhaan jne.....
Ainaskin mysli 4.1.7 toi mun kysely toimii ongelmitta. Muista kannoista en sit tiedäkkään, ja myslissähän on omat pikkujipot joten kyselyitä joutuu aina sovittamaan jos meinaa toiseen kantaan vaihtaa.
En tosin tiedä onko toi minun kysely sql-standartin mukainen, kun siinä group lausekkeessa on date_format, tämä kai kuuluisi virallisesti sijoittaa select lauseeseen, kuten sinä olet tehnyt. Onkohan kenelläkään tästä tarkempaa tietoa?
SELECT
*,
COUNT(id) AS monta,
DATE_FORMAT(paiva, "%Y%j") AS paivays
FROM taulukon_nimi
GROUP BY paivays
HAVING monta < 48
Noin kai se pitäisi tehdä?
Ja äkkiseltään ainoa ero minun ja sinun parannetun version välillä on, limit ;)