Autor Zpráva
Kcko
Profil
tabulka.clanky
id | nadpis | datum | kategorie | dalsi_nepotrebne_sloupce

tabulka.kategorie
id_kategorie | nazev_kategorie


Kategorii je asi 10, clanku asi 200

Potrebuji pro kazdou kategorii vybrat nejnovejsi clanek



Splodil jsem toto

SELECT 
t1.id, 
t1.nadpis,
t2.datum,
t1.datum,
t2.kategorie
FROM clanky t1
JOIN  ( SELECT t2.kategorie, MAX(t2.datum) datum FROM clanky t2 GROUP BY t2.kategorie) t2
ON t1.kategorie = t2.kategorie
AND t1.datum = t2.datum



Samozrejme tam chybi jeste napojeni na tabulku kategorie kvuli nazvu , ale to je vedlejsi.

Zajimalo by mne, zdali by to slo jinak nez napojenim na neexistujici tabulku ktera vznikla poddotazem
uz z toho duvodu ze kdybych spojoval vetsi pocet zaznamu tak by to nemuselo byt rychle, protoze na Datu nemam index a neni tam treba ...


Diky ;]
Kajman_
Profil *
Pokud i id lze použít na rozlišení novějších článků, tak by mohlo být rychlejší

select * from clanky t1
where t1.id in (select max(t2.id) id from clanky t2 group by t2.kategorie)
Kcko
Profil
gracias maestro jako vzdy ostatne
ninja
Profil
Spolehat se na to, ze nejvetsi id = nejnovejsi clanek je dost osemetne.
Kcko
Profil
Tak zkus navrhnout dalsi reseni ;]

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0