Jul 03
[MySQL] Grupowanie i sortowanie wyników
Swego czasu miałem spory problem z rozwiązaniem problemu wyciągnięcia danych grupując i sortując jednocześnie.
Cały problem polegał na tym, że chciałem wyciągnąć najnowszego newsa z konkretnej grupy. Robiłem to mniej więcej tak:
Niestety wynik bywał opłakany, bo wyciągane były zazwyczaj newsy pierwsze z brzegu. Dlaczego? Otóż przed ORDERem następuje grupowanie. MySQL w tej sytuacji nie patrzy na to czy ma jakoś posortować dane, tylko najpierw grupuje, a potem coś tam próbuje posortować :)
Żeby rozwiązać ten palący problem spędziłem trochę czasu na poszukiwaniach w Sieci. Widziałem jakieś INNER JOINy z JOINami i innymi cudami. Rozwiązanie, które pokażę (a znalazłem przypadkiem :)) wykorzystuje podzapytanie. Całość wydaje się zgrabna i czytelna, chociaż przyznam, że nie sprawdzałem pod kątem wydajności.

July 3rd, 2009 at 09:48
A zobacz, co Ci pokaże EXPLAIN po pierwszym, a co po drugim zapytaniu. [;
September 22nd, 2009 at 01:13
pod wzgledem wydajnosci to napewno nie jest dobrze
September 25th, 2009 at 02:27
Fajnie ale mi wywala błąd
MySQL zwrócił komunikat: Dokumentacja
#1064 - Something is wrong in your syntax obok ‘SELECT * FROM forum_post ORDER BY id_post DESC) GROPU BY id LIMI’ w linii 1
Ktoś pomoże?? najlepiej proszę o kontakt na Email
September 25th, 2009 at 02:28
Mma takie zapytanie SELECT * FROM (SELECT * FROM forum_post ORDER BY id_post DESC) GROPU BY id
December 5th, 2009 at 12:12
A jak wlepić podzapytanie dla takiego czegoś - bo nic mi nie działa:
select distinct(id), sum(ilosc) from zamowienia group by id
Ja to po prostu posortowałem w php zapisując do tablic wielowymiarowych poprzez multisort();
Nie ma chyba innego rozwiązania.
Pzdr
April 8th, 2010 at 08:22
SELECT *
FROM news
WHERE date_publication = ALL(SELECT MAX(date_publication) FROM news GROUP BY group_id)