Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak połączyć distinct, group by i desc?
Forum PHP.pl > Forum > Bazy danych > MySQL
Elektryk
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ę?
yarek12
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

  1. ORDER BY id DESC LIMIT 0,5


jak już masz kolumnę id to dopisz to na końcu swojego zapytania i po problemie.
Elektryk
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ąć).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.