Autor Zpráva
Izzi
Profil
Zdravim,

nemozem vyriesit tento problem ohladom fora:

Mam 2 tabulky:
prispevky obsahuje: uzivatel, text, datum, tema_id, id

temy obsahuje: nazov, priorita, zamok, zakladatel, id

Chcem zobrazit vsetky temy zoradene podla datumu z tabulky prispevky. Este dodam ze tema_id v tabulke prispevky sa rovna id v tabulke temy.

Dakujem.
Kajman_
Profil *
Podle kterého datumu, když jich může být k jenomu tématu víc?
Izzi
Profil
ku kazdej teme su x prispevkov a kazdy prispevok ma vlastny datum
Kajman_
Profil *
Ano, proto je divné vypsat témata seřazené podle datumu, protože těch datumů je nula až moc k jednomu tématu.
Izzi
Profil
oh, tak to asi vyriesim tak ze do tabulky temy si pridam stlpec posledny_prispevok a budem tam zapisovat datum posledneho prispevku...
Kajman_
Profil *
Pokud podle posledního příspěvku, tak můžete např.
select t.*, l.*
from temy t
left join (select tema_id, max(id) id from prispevky group by tema_id) i on t.id=i.tema_id
left join prispevky l on i.id=l.id
order by l.id desc


Ale při více řádků se již může pro zvýšení rychlosti dotazu ukládat do tabulky temy posledny_prispevok (např. jeho id).
Izzi
Profil
No tak to funguje bezchybne... ale kedze ja nie som velmi zdatny v mysql tak som doteraz pouzival naraz dve selecty pre vyber uzivatela, ktory napisal posledny prispevok a pre spocitanie vsetkych prispevkov danej temy:

SELECT count(*) AS pocet_prispevkov FROM prispevky WHERE tema=$idecko
SELECT uzivatel,datum FROM `prispevky` WHERE tema=$idecko ORDER BY `id` DESC LIMIT 1

Viem ze je to az hnusne.. ale pre MNA bolo hlavne, ze to fungovalo.. :-)
Poradite mi este ako by som tieto dve selecty implementoval do predchadzajuceho kodu? Dakujem vlmi pekne.
Kajman_
Profil *
Ale vždyť tam ten poslední příspěvek je kompletní, ne? Nejen čas, ale i uživatel. Jen stačí přidat ten count.

select t.*, l.*,i.pocet,
from temy t
left join (select tema_id, max(id) id, count(*) pocet from prispevky group by tema_id) i on t.id=i.tema_id
left join prispevky l on i.id=l.id
order by l.id desc
Izzi
Profil
ako vravim som v tom lama...:) ale dakujem
Toto téma je uzamčeno. Odpověď nelze zaslat.