Avatar billede sbay Nybegynder
11. august 2010 - 02:33 Der er 16 kommentarer

finde min og max

Hejsa

Jeg skal bruge min og maxværdierne OG den tilhørende datetime. Men det her virker ikke:

SELECT
Max(`Reading`.`BD000002AB2A1A28`),
`Reading`.`DATETIME`
FROM
`Reading`

SELECT
Min(`Reading`.`BD000002AB2A1A28`),
`Reading`.`DATETIME`
FROM
`Reading`


DATETIME er den samme for begge resultater, selvom det ikke er der den hører til.

Jeg skal altså bruge Max + den dato den blev opnået og min + den dato den blev opnået!
Avatar billede arne_v Ekspert
11. august 2010 - 03:06 #1
Prøv:

SELECT * FROM tabel WHERE bdlang = (SELECT MAX(bdlang) FROM tabel) LIMIT 1
UNION
SELECT * FROM tabel WHERE bdlang = (SELECT MIN(bdlang) FROM tabel) LIMIT 1
Avatar billede ggxdg Nybegynder
12. august 2010 - 09:44 #2
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_max

fungerer:
SELECT MIN(BD000002AB2A1A28), MAX(BD000002AB2A1A28), DATETIME FROM Reading
?
Avatar billede ggxdg Nybegynder
12. august 2010 - 09:52 #3
Jeg har ingen idé om man kan gøre som følger:

SELECT BD000002AB2A1A28, DATETIME
FROM Reading
WHERE BD000002AB2A1A28 = MIN(BD000002AB2A1A28)
OR BD000002AB2A1A28 = MAX(BD000002AB2A1A28)
Avatar billede arne_v Ekspert
12. august 2010 - 15:47 #4
Det kan man godt - hvis der kun er en raekke med MAX vaerdi og en raekke med MIN vaerdi saa giver den samme output som #1.
Avatar billede sbay Nybegynder
14. august 2010 - 23:08 #5
Jeg har nu prøvet arne_v's forslag, men jeg skal jo have nogle AS XXX på, og det vil den ikke helt være med til. Jeg kan godt selecte DATETIME AS DMAX, men når jeg så skriver BD000002AB2A1A28 AS TMAX, får jeg en syntaks fejl!
Avatar billede arne_v Ekspert
14. august 2010 - 23:46 #6
Kan vi lige få den komplette SQL du forsøger med?
Avatar billede sbay Nybegynder
15. august 2010 - 10:35 #7
SELECT DATETIME AS DMIN,9E000002AB190C28 AS TMAX FROM Reading
        WHERE '9E000002AB190C28' = (SELECT MAX(Reading.9E000002AB190C28) FROM Reading) LIMIT 1
Avatar billede ggxdg Nybegynder
15. august 2010 - 14:20 #8
SELECT DATETIME AS DMIN,9E000002AB190C28 AS TMAX FROM Reading
        WHERE 9E000002AB190C28 = (SELECT MAX(Reading.9E000002AB190C28) FROM Reading) LIMIT 1


Hvis det stadig ikke virker, kan du så ikke bare kalde den som array?
Er DMIN reserved til mysql? Jeg søgte efter det, men jeg har ikke kunnet dfinde noget om det...
Avatar billede arne_v Ekspert
15. august 2010 - 16:22 #9
Prøv med:

SELECT `DATETIME` AS DMIN,`9E000002AB190C28` AS TMAX FROM Reading
        WHERE `9E000002AB190C28` = (SELECT MAX(`9E000002AB190C28`) FROM Reading) LIMIT 1
Avatar billede sbay Nybegynder
15. august 2010 - 22:28 #10
Nedenstående giver det rigtige resultat (MAX værdi), men det er lavet med Navicat Query editor:

SELECT
`Reading`.`DATETIME`,
`Reading`.`9E000002AB190C28`
FROM
`Reading`
WHERE
`Reading`.`9E000002AB190C28` =  (SELECT
Max(`Reading`.`9E000002AB190C28`)
FROM
`Reading`)
LIMIT 1

Jeg kan så ikke få det omskrevet til en query i PHP, så det virker :-(
Avatar billede sbay Nybegynder
15. august 2010 - 22:35 #11
Juuhuu så lykkedes det!

SELECT
Reading.DATETIME AS DMAX,
Reading.9E000002AB190C28 AS TMAX
FROM
Reading
WHERE
Reading.9E000002AB190C28 =  (SELECT
Max(Reading.9E000002AB190C28)
FROM
Reading)
LIMIT 1
Avatar billede sbay Nybegynder
15. august 2010 - 22:36 #12
Arne - smid et svar - du fik mig på rette vej :-)
Avatar billede ggxdg Nybegynder
15. august 2010 - 22:41 #13
arne_v's første forslag burde da give helt det samme:

$query "SELECT DATETIME,9E000002AB190C28 FROM Reading WHERE 9E000002AB190C28 = (SELECT MAX(9E000002AB190C28) FROM Reading) LIMIT 1";
Avatar billede ggxdg Nybegynder
15. august 2010 - 22:42 #14
Hov... så ikke lige du fik det til at virke før du postede :P
Avatar billede arne_v Ekspert
21. august 2010 - 15:16 #15
svar
Avatar billede arne_v Ekspert
26. september 2010 - 21:06 #16
så mangler du bare at acceptere svaret
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester