Autor Zpráva
michaelkiller
Profil
Mám nasledovný select:
SELECT reply_id, details FROM cws_news WHERE news_type='reply' ORDER BY date_time DESC LIMIT 0,5

Potreboval by som v tom celom použiť ešte GROUP BY, lenže keď to upravím na tvar:
SELECT reply_id, details FROM cws_news WHERE news_type='reply' GROUP BY heading ORDER BY date_time DESC LIMIT 0,5

tak group by má prednosť ( vykoná sa ako prvé ) a až následne potom sa vykoná ORDER...
Existuje nejaká možnosť ako to spraviť v opačnom poradí?

Totižto vyťahujem komentáre k článok( s headingom ), chcem docieliť aby sa vytiahlo posledných 5 komentárov v databáze, ale aby sa každý článok(ku ktorému hľadám komentár) vyskytoval len 1.
michaelkiller
Profil
Nikto neviete, ako to docieliť? Napadá ma jedine selektnúť bez limitu a upraviť v PHP...
Efektívnejšie riešenie cez SQL neexistuje?
Leo
Profil
"Totižto vyťahujem komentáre k článok( s headingom ), chcem docieliť aby sa vytiahlo posledných 5 komentárov v databáze, ale aby sa každý článok(ku ktorému hľadám komentár) vyskytoval len 1."

To jsem nejak nepochopil, Leo
michaelkiller
Profil
LEO: Skúsim upresniť.
Mám tabuľku s komentármi, ktoré sa líšia idčkom, časom odpovede a sú pridružené k určitému článku nadpisom...
Akonáhle použijem tamten select s order by bez použitia group by, vypíše mi to posledných 5 komentárov k headingom(článkom). Lenže môže nastať situácia, keď z posledných 5 komentárov patrí viac ako 1 k tomu istému headingu. To som chcel ošetriť pomocou group by.
Lenže po použití group by, mi select vyhodí 5 komentárov k rôznym headingom, ale zoradenie podľa času nefunguje tak ako by malo.
Totižto order by sa vykoná až po operácii group by, takže najskôr sa vyberú všetky komentáre k headingom --> nasleduje group by ( čo vytiahne prvý komentár ku každému headingu ) a potom nasleduje order by ( čo ich zoradí podľa dátumu ).
Ja potrebujem vybrať komentáre -> zoradiť podľa dátumu -> použiť group by..
Ďakujem
Leo
Profil
Takze vlastne chcete ke kazdemu clanku vypsat posledni komentar? Leo
michaelkiller
Profil
Leo : Presne, vidíte ako sa to dá jednoducho povedať...
ash
Profil
ak máš MySQL 4.1:

SELECT reply_id, details FROM cws_news
WHERE reply_id IN (SELECT max(reply_id) FROM cws_news WHERE news_type='reply' GROUP BY heading )

Vypíše komenár s najvyšším reply_id vrámci jedného heading.
Vypísať 5 najnovších komentárov bez spolupráce s PHP neviem.
michaelkiller
Profil
ash ďakujem, nakoniec som to vyriešil s PHPčkom.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0