![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Chcę, aby pogrupowane wiersze według user_agent, czyli system, przeglądarka, były posortowane według użycia jej w danym poście (post_id) malejąco. W tym przypadku najpierw grupuje, potem sortuje, ale według pierwszego posta z tej przeglądarki, czyli najstarszego, a ma sortować według najnowszego. Dam screena, jak to wygląda, bo może być niezrozumiałe. ![]() Więc dajmy na to, post na xp, był napisany wcześniej, niż na win7, więc logiczne, że win7 jest wyżej, ale jeżeli napiszemy znów posta na xp, kolejność się nie zmienia, bo sortuje patrząc na pierwszy post z tego systemu, a nie ten najnowszy. Gdyby patrzyło na najnowszy, winXp przeskoczyłby wyżej, ponieważ ostatni post użytkownika był właśnie napisany na tym systemie, ale tak nie jest. Wiem, że da się to jakoś zrobić przez połączenie zapytań, niestety ja już wysiadam, nie jestem jeszcze na takim poziomie ![]() ![]() Pomoże ktoś? Bo meczę to już kilka dni. Ten post edytował Vafel 3.10.2011, 21:24:29 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
trochę chaotycznie to napisałeś, więc do końca nie wiem o co Ci chodzi, bo zamiast dać strukturę bazy i napisać co chcesz osiągnąć to dajesz jakieś screen, który tylko dla Ciebie jest zrozumiały, ale zgaduję, że chodzi Ci o dość popularny problem z group by i order by i chciałbyś, żeby wyniki zostały posortowane przed grupowaniem, jeżeli tak to tutaj masz rozwiązanie -> http://www.cafewebmaster.com/mysql-order-sort-group
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Właśnie próbowałem to zrobić na podobnym przykładzie, ale cały czas błąd:
SQL Error : 1248 Every derived table must have its own alias Byłbym wdzięczny jakby mi ktoś na podstawie mojego kodu to przedstawił ![]() Ten post edytował Vafel 3.10.2011, 21:40:47 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
no nie przesadzaj, masz gotowy i działający przykład wystarczy swoje kolumny podstawić, wykaż trochę inicjatywy
Cytat Właśnie próbowałem to zrobić na podobnym przykładzie, ale cały czas błąd. To pokaż jak próbowałeś, a wkleiłeś błąd do google? sprawdziłeś co oznacza?edit: no i co jest nie jasnego? wklej do google tłumacz jeśli nie rozumiesz ang, wklej to też do przeglądarki google i w pierwszym wyniku masz odpowiedź Ten post edytował tehaha 3.10.2011, 21:46:29 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Heh, po angielsku potrafię, ale łatwo się mówi. Ja jestem bardzo początkujący, ta modyfikacja nie jest zrobiona prze zemnie. Więc w tym przypadku kompletnie błądzę po omacku.
Ten post edytował Vafel 3.10.2011, 22:11:07 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
a dlaczego nie wkleisz tu swojej próby? ja Ci chętnie pomogę ale jeżeli liczysz, że zrobię to za Ciebie to marne szanse, wystarczy odrobina dobrych chęci z Twojej strony, podałem Ci link z gotowym zapytaniem, to jest dokładnie takie zapytanie jakie potrzebujesz, wystarczy, że podstawisz nazwy swoich kolumn i nazwę tabelki
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Niech będzie. Tylko tak jak mówiłem, takie rzeczy to jeszcze dla mnie czary mary, więc:
EDIT: Pominąłem WHERE. Poprawiłem. Ten post edytował Vafel 3.10.2011, 22:34:04 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Ten kod wszedł bez błędu, ale nie sprawdzałem, czy działa jak chciałem. Właściwie, co ja mam za alias tam dać? Limit na końcu, poza nawiasem? Bo ja chcę limit do order. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
nazwa aliasu nie jest istotna bo to chodzi o to, że podzapytanie zwraca Ci tak jakby posortowaną tabelę dla której trzeba nadać tymczasową nazwę i teraz w tej posortowanej tymczasowej tabelce grupujesz wyniki i wyciągasz sobie 10. LIMIT daj całkiem na samym końcu, czyli za GROUP BY
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Weszło, ale mam posortowane według alfabetu z kolumny user_agent, a chciałem według post_id. |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
dziwne, a spróbuj jeszcze dodać to samo ORDER BY w głównym zapytaniu czyli GROUP BY, a jak nie zadziała to daj zrzut bazy z danymi to sprawdzę u siebie to zapytanie
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Czyli mam dodać ORDER BY drugi raz po GROUP BY? Wtedy zwraca mi błąd.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
eh, a jak myślisz co ja mogę wywnioskować z samego "zwraca mi błąd". coś nie działa? -> wklejasz kod i treść błędu, po uprzednim sprawdzeniu w google co znaczy błąd
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wygląda to tak.
Couldn't obtain user agents list DEBUG MODE SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY post_id' at line 11 SELECT user_agent, COUNT(*) as how_much FROM ( SELECT user_agent FROM phpbb_posts WHERE poster_i Ten post edytował Vafel 3.10.2011, 22:57:30 |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
błąd jasno napisał sprawdź manual, no to sprawdź manual http://dev.mysql.com/doc/refman/5.0/en/select.html
i zobacz w jakiej kolejności daje się limit, group, order popraw kod i wklej jeszcze raz Ten post edytował tehaha 3.10.2011, 23:00:38 |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
SQL Error : 1054 Unknown column 'post_id' in 'order clause' |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
w podzapytaniu czyli w tym nawiasie dodaj kolumnę post_id czyli SELECT post_id, user_agent
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 1.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co pobieżnie sprawdziłem, to działa jak należy ![]() ![]() A jak bym chciał zrobić to wyświetlanie inaczej, to znaczy żeby wyświetlało wszystkie, ale po 10 na podstronach. Trudne to jest do zrobienia? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 09:09 |