![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.07.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam pewną zagwozdkę i szukam pomocy. Chodzi o to, że mam w tabeli kolumny section, opinion i vote i chcę wyciągnąć 5 ostatnich głosów dla różnych sekcji. No więc robię to tak: Kod SELECT distinct section, vote, opinion FROM tabela GROUP BY section Dzięki takiemu zapytaniu otrzymuję dokładnie jeden rekord dla każdego osobnego section. Problem polega jednak na tym, że zwracane vote i opinion należą do pierwszego rekordu z danym section w tabeli. A ja potrzebuję ostatni. Niestety dopisanie desc nie pomaga gdyż z tego co wywnioskowałem desc oddziaływuje na scalony wynik a nie na wszystkie rekordy w tabeli. Czy ktoś mógłby mi podpowiedzieć jak napisać to zapytanie by działało tak jak ja chcę? Ten post edytował Elektryk 1.05.2011, 13:50:35 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 127 Pomógł: 0 Dołączył: 5.08.2010 Ostrzeżenie: (10%) ![]() ![]() |
z twojego postu wynika, że nie masz w tej tabeli kolumny ID a jest ona niezbędna do takiego zapytania, bowiem wyznacza ona kolejność dodawania rekordów.
jeśli więc nie masz takiej kolumny to utwórz ją używając INT (11), auto_increment
jak już masz kolumnę id to dopisz to na końcu swojego zapytania i po problemie. Ten post edytował yarek12 1.05.2011, 16:05:36 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.07.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Mój błąd, faktycznie nie napisałem o tym. Ale mam tam kolumnę id ustawioną jako klucz główny a także parę innych kolumn będących kluczami obcymi jak user czy item. I próbowałem już metody z sortowaniem ale niestety to nie działa tak jak powinno ponieważ sortowanie jest wykonywane na pogrupowanych wynikach.
Przykład: Głosowano kolejno tak: Cena: 2 Wykonanie: 4 Cena: 6 Wykonanie: 8 I teraz chcę sprawdzić jakie były ostatnie oceny dla Ceny i Wykonania. Powinienem więc otrzymać odpowiednio 6 i 8. Po użyciu zaś sort by id desc otrzymam wynik 4 i 2 gdyż baza danych najpierw powybiera oceny unikalnych cech (2 i 4) a potem dopiero to posortuje odwrotnie względem id. Póki co nie widzę szans by rozwiązać to inaczej niż poprzez funkcję w php lub procedurę w bazie (przy czym wolałbym tego drugiego uniknąć). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 17:51 |