| Autor | Zpráva | ||
|---|---|---|---|
| embrio Profil |
#1 · Zasláno: 18. 4. 2013, 22:47:32
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 |
#2 · Zasláno: 18. 4. 2013, 22:53:42
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 |
#3 · Zasláno: 18. 4. 2013, 23:13:15 · Upravil/a: Tori
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 |
#4 · Zasláno: 18. 4. 2013, 23:28:26
„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. |
||
|
Časová prodleva: 10 dní
|
|||
| embrio Profil |
#6 · Zasláno: 28. 4. 2013, 20:08:52
Tori:
Děkuji mockrát, opravdu funguje! |
||
|
Časová prodleva: 13 let
|
|||
0