Altså 4 poster fordelt på 2 dage med forskellige værdier i 'value'. Nu vil jeg gerne finde den højeste værdi der er repræsenteret i de forskellige dage. Men isoleret, så dagene kun optræder én gang.
så det ser sådan her ud: (eksempel) ID, Date(ikke tid), Value 1, 2008-12-01, 6 2, 2008-12-02, 8
Jeg har rodet lidt med max() og DISTINCT med uden held. Håber i kan hjælpe Mvh Christian
Hvis nu en post optræder med den samme MAX værdi flere gange og jeg så gerne vil ha den der ligger tidligst iforhold til klokkeslettet? Eksempel: 1,2008-12-01 12:00:00, 6 2,2008-12-01 13:00:00, 3 3,2008-12-02 07:00:00, 8 * 4,2008-12-02 12:30:00, 5 5,2008-12-02 13:30:00, 8 *
Her er værdien 8 to gange d. 2 december, jeg er interesseret i den første? Christian
Ja, der vil være situationer hvor max værdien optræder flere gange men med samme antal ( i eksempelet værdien 8 på datoen 2008-12-02. Den optræder i eksemplet 2 gange.) Jeg har brug for Id på den der kommer først iforhold til klokkeslettet.
SELECT * FROM tabel a WHERE NOT EXISTS (SELECT * FROM tabel b WHERE DATE_FORMAT(b.dato,'%Y-%m-%d') = DATE_FORMAT(a.dato,'%Y-%m-%d') AND (b.val > a.val OR (b.val = a.val AND b.id < a.id)))
Nå, jeg ved ikke hvordan jeg skal implementere det i mit eksempel.. Jeg har ikke arbejdet med aliaser før. kan du gi et eksempel. evt til posten i denne tråd kl: 32:51. Christian
Koden virker som den gamle, men jeg skal sorterer på klokkeslettet, finde den højeste værdi for en givende dag samt Id på den først kommende, højeste værdi. Som jeg ser tråden: 20/11-2008 00:11:06, Så sorterer du på Id?
Her er 8 den højeste værdi d. 2 december. Det vil jeg gerne udtrække samt hvornår 8 (den højeste værdi) først forekommer (tidspunktet) på denne dag. I dette tilfælde kl. 07:00:00. Med din kode skriver den 13:00:00 som er den sidste forkommende.Eller sidst oprettet.
SELECT * FROM data a WHERE NOT EXISTS (SELECT * FROM data b WHERE DATE_FORMAT(b.dato,'%Y-%m-%d') = DATE_FORMAT(a.dato,'%Y-%m-%d') AND (b.val > a.val OR (b.val = a.val AND b.dato < a.dato)));
Hej arne_v. Det virker næsten. Hvordan laver jeg LIMIT på 1 for hver enkel dag. Hvis der findes flere datoer med samme højeste værdi og starttid -kommer de alle med nu.. Jeg skal bare bruge én - det spiller ingen rolle hvilken bare tidspunktet er det tidligste...
Og tak! (du skal vel snart ha nogen flere point, det har jo udartet sig til 3 nye spgs!) christian Christian
SELECT * FROM data a WHERE NOT EXISTS (SELECT * FROM data b WHERE DATE_FORMAT(b.dato,'%Y-%m-%d') = DATE_FORMAT(a.dato,'%Y-%m-%d') AND (b.val > a.val OR (b.val = a.val AND b.dato < a.dato) OR (b.val = a.val AND b.dato = a.dato AND b.id < a.id));
Tak Arne, det virker perfekt! smider nogle ekstra points til dig i Mysql forumet!
Christian
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.