Autor Zpráva
embrio
Profil
Dobrý den, potřeboval bych pomoci a nemůžu najít odpověď.

Mám tabulku

clanky
---------
id nazev

a druhou

texty
---------
id clanky_id text datum

, kde v textech je uložena historie úprav textů.

Potřebuji vypsat všechny články s poslední verzí textu (tedy s nejnovějším datem), propojení probíhá mezi id=clanky_id.

Můžete mě, prosím, nasměrovat, jak na to?

Děkuji.
abc
Profil
Nějak takto?
SELECT c.*, t.* FROM clanky c JOIN texty t ON c.id = t.id ORDER BY t.datum DESC 

Datum musí být samozřejmě typu datetime, pokud ne, je čas to tak předělat :-)
Tori
Profil
Spíš takhle (podle FAQ):
select c.*, t1.*
from   texty t1,
       clanky c,
       (select t2.clanky_id, max(t2.datum) datum
        from   texty t2
        group  by t2.clanky_id) t3
where  t1.clanky_id = t3.clanky_id
       and t1.datum = t3.datum
       and c.id = t1.clanky_id



Další možnost by byla ukládat si u každého článku identifikátor poslední revize (id nebo datum z tabulky texty). Akorát byste musel při uložení nové verze článku taky updatovat tabulku clanky.
abc
Profil
Další možnost by byla ukládat si u každého článku identifikátor poslední revize (id nebo datum z tabulky texty). Akorát byste musel při uložení nové verze článku taky updatovat tabulku clanky.
Potom by imho měl být dotaz na vytažení článků rychlejší (?)
Tori
Profil
abc:
Myslím si, že ano. Jednodušší spojení tabulek za cenu mírné redundance. Podobně, jako když ukládáte u uživatele počet jeho příspěvků ve fóru.
embrio
Profil
Tori:
Děkuji mockrát, opravdu funguje!

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: