![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 3.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
sam nie wiem jak zaczac posta, zacmienie jakies mnie dopadlo. Mam (wydaje mi sie) banalne zadanie i mam problem: Tabela:
Cel, posortowanie userow o najmniejszej wartosci i zalozeniem, ze jesli dwoch userow ma taka sama wartosc to "wyzej" bedzie ten o mniejszym ID. Czyli wynik powinien byc taki (lp, user, czas, id):
Zapytanie:
Wynik
...dla usera numer 3 mysql wyswietla ID 4, a nie 5. Pogubiłem się, proszę o podpowiedź. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 3.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję za odpowiedź, ale nie rozwiązuje to mojego problemu. Jesli dodam trzecia wartosc (ID) do zapytania
To ID blednie jest wyswietlane. Nie rozumiem, czemu user i MIN(czas) pobiera i sortuje porpawnie, a kolejnej wartości już nie. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Bo to jest MySQL.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 3.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mhm, fajno, dzięki, wszystko jasne..
To pytanie zatem to kogoś, kto ma więcej ochoty, czy cierpliwości. Czy można zrobić jedno zapytanie, aby pobrać poprawnie te trzy wartości, czy muszę najpierw robić SELECT MIN, czas, a pozniej sprawdzac w drugim SELECT'cie ID odpowiadajace posortowanym wynikom? ----------------------------------------- Ok, chyba znalazłem rozwiązeni, które mnie satysfakcjonuje. Może się komuś przyda na przyszłość: SELECT * FROM ( SELECT * FROM test ORDER BY czas ASC ) as test GROUP BY user ORDER BY czas Ten post edytował AoW 9.11.2013, 13:10:43 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ustaw sobie SQL_MODE=ANSI (czyli najbardziej SQL-owy tryb), to się przekonasz czy zapytanie się wykona. Wtedy zrozumiesz moje "Bo to jest MySQL."
A potem się poducz i wróć tu, jak napiszesz prawidłowo. Ten post edytował mmmmmmm 9.11.2013, 15:00:34 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 3.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że forum jest po to, aby choć nakreślić drogę do rozwiązania problemu. Twój pierwszy post w tym temacie był nietrafiony, bo nie dotykał sedna problemu. Twojej drugiej odpowiedzi nie będę nawet komentować, bo już to zrobiłem w mojej odpowiedzi.
Zapytanie, które podałem jako rozwiązanie mojego problemu działa. Ty chyba sugerujesz, że jest inaczej - nie wiem w zasadzie mnie to nie interesuje. A uwagi w stylu "poducz się i wróć tu..." zachowaj następnym razem dla siebie. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Widzę, że przychodzisz po gotowca. Nie chcesz się poduczyć...
To ci wyjaśnię: 1. To, że to zapytanie działa, to OK. 2. Następne tego typu wcale nie musi działać. 3. Dlatego że nie używsz SQL_MODE=ANSI, więc korzystasz z gównianego MySQL-owego grupowania, które jest zgodne z smym sobą i to chyba nie zawsze. 4. W zapytaniu z grupowaniem albo są pola po których się grupuje, albo stałe, albo funkcje agregujące. Nie ma innych. W ANSI SQL-u. Czy więc jest `id` z twojego zapytania? Żadnym z powyższych... O * już nie wspomnę bo to totaln pomyłka... Nie odnoś tego do siebie, bo jest tu wielu takich nieuków. Raz to napiszę, a potem będę kopiował linka (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Wg mnie MySQL ma tylko jedną zaletę: jest 3 w LAMP.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 00:40 |