Autor | Zpráva | ||
---|---|---|---|
juneau Profil |
#1 · Zasláno: 9. 4. 2006, 21:38:09
Mam tabulku komentaru: id | id_textu | jmeno | sekundy |... id_textu je id clanku, pod kterym je komentar ulozen a sekundy je unix timestamp (pocet sekund od 1970). Potreboval bych v dotazu vratit pro kazdy text jmeno a sekundy POSLEDNIHO komentare.
Dotaz "SELECT id_textu,jmeno,sekundy FROM web_komentare WHERE videt='1' GROUP BY id_textu ORDER BY id_textu DESC" mi pro 99% textu vrati spravne udaje, ale pro zbyle 1% nahodny komentar (resp vzdy stejny, ale ne posledni). Prijde mi, ze zaznamy vracene timto dotazem ovlivnim i tim, pridam-li LIMIT nebo ne. Zvlastni. |
||
Kajman_ Profil * |
#2 · Zasláno: 10. 4. 2006, 21:43:05
Dělá se to tak, že se výsledek toho group by ještě slinkuje s tou samou tabulku s podmínkou, že id_textu bude rovno a maximalni sekundy bude rovnou sekundam z negroupované tabulky.
|
||
juneau Profil |
#3 · Zasláno: 11. 4. 2006, 17:05:41
Presne tak jsem to dnes odpoledne vyresil
SELECT max(k.id) id, k.id_textu,a.jmeno,k.sekundy FROM web_komentare k LEFT JOIN web_komentare a USING(id) WHERE videt='1' GROUP BY id_textu ORDER BY id_textu DESC Tento tvar vyhodi spatne vysledky... proste to nejsou podledni komentare (nejvyssi id). Staci ale na konec pridat LIMIT 0,5000 (napr) a vyhodi to vysledky spravne. Nechapu to, ale co s tim muzu delat. |
||
Kajman_ Profil * |
#4 · Zasláno: 11. 4. 2006, 17:49:15
a co?
LEFT JOIN web_komentare a ON max(k.id)=a.id |
||
juneau Profil |
#5 · Zasláno: 11. 4. 2006, 18:17:10
To jsem samozrejme zkousel, ale napsalo mi to neco o nepovolenem pouziti group fce.
|
||
Kajman_ Profil * |
#6 · Zasláno: 12. 4. 2006, 09:26:38
Mrkni na komentáře v manuálu, je tam pár řešení.
http://dev.mysql.com/doc/refman/4.1/en/example-maximum-column-group-ro w.html |
||
juneau Profil |
#7 · Zasláno: 12. 4. 2006, 10:51:41
Diky za podnetny odkaz, ale jak jsem psal vyse, reseni uz mam. Jen porad nechapu, jak je mozne, ze stejny dotaz vraci ruzne vysledky podle toho, zda je u nej LIMIT nebo ne.
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0