Autor | Zpráva | ||
---|---|---|---|
michaelkiller Profil |
#1 · Zasláno: 29. 7. 2005, 13:29:10
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 |
#2 · Zasláno: 29. 7. 2005, 20:18:00
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 |
#3 · Zasláno: 29. 7. 2005, 21:40:12
"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 |
#4 · Zasláno: 29. 7. 2005, 23:02:57
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 |
#5 · Zasláno: 30. 7. 2005, 01:10:41
Takze vlastne chcete ke kazdemu clanku vypsat posledni komentar? Leo
|
||
michaelkiller Profil |
#6 · Zasláno: 30. 7. 2005, 08:05:11
Leo : Presne, vidíte ako sa to dá jednoducho povedať...
|
||
ash Profil |
#7 · Zasláno: 30. 7. 2005, 17:41:19 · Upravil/a: ash
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 |
#8 · Zasláno: 30. 7. 2005, 18:36:40
ash ďakujem, nakoniec som to vyriešil s PHPčkom.
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0