[mysql] problem z MAX
[mysql] problem z MAX2008-01-24 16:27:10 | autor: Black PeterWitam,
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 MAX2008-01-24 17:23:14 | autor: Paweł_MatejskiBlack 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 MAX2008-01-24 17:33:06 | autor: Black PeterPaweł 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 MAX2008-01-24 17:47:12 | autor: SzymonBlack 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 MAX2008-01-24 18:27:37 | autor: Black PeterSzymon 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
|
