Informacje24.net
Komputery

[mysql] problem z MAX

« poprzednia dyskusja | następna dyskusja » Lista grup | pl.comp.bazy-danych

[mysql] problem z MAX

2008-01-24 16:27:10 | autor: Black Peter

Witam,

mam sobie tabele

tabela
test_id user_id data score
10 15 1 5
10 15 3 3
10 15 6 9

chce otrzymać z zapytania wiersz gdzie data jest max

SELECT MAX(data), score
FROM tabela
WHERE user_id = 15
GROUP BY test_id, user_id

daje mi:

10 15 6 5
^^^
dlaczego? co robie nie tak?

pozdrawiam



--
*Black Peter* ____ ____
o__ ( _ \ ( _ \
_.>/ _ ) _ ( ) __/
(_)_\(_)__ (____/o (__) o

Re: [mysql] problem z MAX

2008-01-24 17:23:14 | autor: Paweł_Matejski

Black Peter wrote:
> Witam,
>
> mam sobie tabele
>
> tabela
> test_id user_id data score
> 10 15 1 5
> 10 15 3 3
> 10 15 6 9
>
> chce otrzymać z zapytania wiersz gdzie data jest max
>
> SELECT MAX(data), score
> FROM tabela
> WHERE user_id = 15
> GROUP BY test_id, user_id
>
> daje mi:
>
> 10 15 6 5
> ^^^
> dlaczego? co robie nie tak?

Nie czytasz dokumentacji ze zrozumieniem.
1. Skąd Ci przyszło do głowy, że funkcje agregujące wybierają wiersze?!
2. W dokumentacji do group by bodajże pisze, żeby właśnie tak nie robić!

--
P.M.

Re: [mysql] problem z MAX

2008-01-24 17:33:06 | autor: Black Peter

Paweł Matejski napisał(a):
> Black Peter wrote:
>> Witam,
>>
>> mam sobie tabele
>>
>> tabela
>> test_id user_id data score
>> 10 15 1 5
>> 10 15 3 3
>> 10 15 6 9
>>
>> chce otrzymać z zapytania wiersz gdzie data jest max
>>
>> SELECT MAX(data), score
>> FROM tabela
>> WHERE user_id = 15
>> GROUP BY test_id, user_id
>>
>> daje mi:
>>
>> 10 15 6 5
>> ^^^
>> dlaczego? co robie nie tak?
>
> Nie czytasz dokumentacji ze zrozumieniem.
> 1. Skąd Ci przyszło do głowy, że funkcje agregujące wybierają wiersze?!
> 2. W dokumentacji do group by bodajże pisze, żeby właśnie tak nie robić!
>
a możesz podpowiedzieć jak napisać zapytanie żebym uzyskał j.w.?


--
*Black Peter* ____ ____
o__ ( _ \ ( _ \
_.>/ _ ) _ ( ) __/
(_)_\(_)__ (____/o (__) o

Re: [mysql] problem z MAX

2008-01-24 17:47:12 | autor: Szymon

Black Peter pisze:
> Witam,
>
> mam sobie tabele
>
> tabela
> test_id user_id data score
> 10 15 1 5
> 10 15 3 3
> 10 15 6 9
>
> chce otrzymać z zapytania wiersz gdzie data jest max
>
> SELECT MAX(data), score
> FROM tabela
> WHERE user_id = 15
> GROUP BY test_id, user_id
>
> daje mi:
>
> 10 15 6 5
> ^^^
> dlaczego? co robie nie tak?
>
> pozdrawiam
>

MAX(id) zwraca maksymalną wartość z całej tabeli.
score zawiera pierwszą lepszą wartość.

spróbuj tak:

SELECT data, score
FROM tabela
WHERE user_id=15
GROUP BY test_id, user_id
ORDER BY data desc
LIMIT 1


--
"... coś tam, ble ble ble..."

a tu proszę nie klickać:
http://blog.mabateus.pl

Re: [mysql] problem z MAX

2008-01-24 18:27:37 | autor: Black Peter

Szymon napisał(a):
> Black Peter pisze:
>> Witam,
>>
>> mam sobie tabele
>>
>> tabela
>> test_id user_id data score
>> 10 15 1 5
>> 10 15 3 3
>> 10 15 6 9
>>
>> chce otrzymać z zapytania wiersz gdzie data jest max
>
> spróbuj tak:
>
> SELECT data, score
> FROM tabela
> WHERE user_id=15
> GROUP BY test_id, user_id
> ORDER BY data desc
> LIMIT 1
>
>

Nic z tego :(
robie:
SELECT *
FROM tabela
WHERE user_id=15
GROUP BY test_id
ORDER BY data DESC

i otrzymuje pierwszy z brzegu wpis a nie z najwyższa datą :(
LIMIT 1 nie mogę stosować bo chce otrzymać wynik dla każdego test_id


--
*Black Peter* ____ ____
o__ ( _ \ ( _ \
_.>/ _ ) _ ( ) __/
(_)_\(_)__ (____/o (__) o

Podobne

2007-06-08 05:17:22 [mysql] problem z selectem - 3 tabele
2007-06-08 11:39:43 [mysql] Grupowanie rekordów wg dat
2007-06-09 17:40:34 Problem z updatem bazy danych
2007-06-10 23:07:31 problem z przeniesieniem bazy mssql (subiekt gt)
2007-06-11 07:35:14 MySql - da się joinować wynik z proce
 
LG KG800
Nokia 6300i
Samsung E250