Autor Zpráva
p_a_v_e_l
Profil *
Ahojte,
dělám si jednoduché forum
a potřeboval bych poradit mam
3 tabulky tema,topic, zpravy a snažím se o to že když se vypiše všechy zaznamy z tema tak si vyberu topic a tak u každého topic chci zobrazit poslední zpravu a stalé se mi to nedaří. Vypis témat a vyběr topic je v pohodě..ale právě u toho topic bych chtěl zobrazovat posledního přizpěvek a datum a řadit to právě podle posledních přizpěvků

SELECT forum_topic.id,forum_topic.nazev,forum_zprava.autor,forum_zprava.datum
  FROM forum_topic,forum_zprava   
    where forum_topic.id_tema='".$_GET['cislo_topic']."'
and forum_topic.id=forum_zprava.id_topic
order by forum_zprava.datum desc

jenomže takhle mi to vypiše vše když dam group by forum_topic.id tak se mi zase nezobrazi pravě ten posledni zaznam správně..
struktura db :
tabulka téma : id, nazev
tabulka topic : id, id_tema, nazev
tabulka zpravy :, id, id_topic,zprava,autor,datum

nevím jak na to...pomůžete mi někdo
Kajman_
Profil *
Mrkněte do faq na druhý příklad u Nalezení řádků s maximální (minimální) hodnotou.
p_a_v_e_l
Profil *
díky mrknu..snad to pochopim:)
Kcko
Profil
Tak si do tabulky tema i topic pridej sloupecky ( posledni_id_zpravy | datumu ..atd)
a pak nemusis saskovat se slozitejma dotazama
p_a_v_e_l
Profil *
to mě taky napadlo,jenže pak už bych vlastně ukladal duplicitní data...navíc se chci naučit i složité dotazy...takže se na to večer vrhnu...
Kcko
Profil
duplicitni data to v tomto pripade nejsou rekl bych ... Musis nastavit urcity pomer mezi redundanci dat a vykonem. V tomto pripade bych radsi volil drobnou redundanci. I kdyz je to redundance? Redundance jsou nadbytecna a opakujici se data, tedy v tomto pripade to prilis neplati.

No delej jak myslis :-)
Kajman_
Profil *
Redundance to je, ale v praxi to občas bývá menší zlo než zátěž db. Např. tahle diskuse je tak rozsáhlá, že by jí redudnace některých dat mohla pomoci. Malá fóra to nemusí potřebovat.
p_a_v_e_l
Profil *
neplanuji velkou diskuzi, ale jen mě to tak napadlo s tou redundanci. spíš mam jiny problém ..studolva jsem tip od Kajman_
a skoro mi to pomohlo udělal jsem to tak to

 SELECT forum_topic.id,forum_topic.nazev,forum_zprava.autor,forum_zprava.datum
  FROM forum_topic,forum_zprava   
  where forum_topic.id_tema='".$_GET['cislo_topic']."'
and forum_topic.id=forum_zprava.id_topic
and (select max(forum_zprava.datum) from forum_zprava )

order by forum_zprava.datum desc

což sice vybere správně ale zobrazuje to všechno když dam group by forum_zprava.id_topic tak to sjednoti ale vybrany čas zustane ten prvni ne posledni a limit nemůžu použit protože se mi pak nevypišou všechny topic takže teď přešlapuji a nevím jak dal
Mastodont
Profil
and (select max(forum_zprava.datum) from forum_zprava )

To by mělo být spíš
and forum_zprava.datum = (select max(forum_zprava.datum) from forum_zprava )
p_a_v_e_l
Profil *
to jsem taky omylem dal to vypiše zcela to co chci ale omezi se to jen na jeden topic něco v tom smyslu jako limit 1
Kajman_
Profil *
Ještě jednou se mrněte do faq. Musíte se inspirovat druhým příkladem.
p_a_v_e_l
Profil *
asi nemam tak dokonalou schopnost se inspirovat..ale zkusim to...
p_a_v_e_l
Profil *
tak jsem to nakonec skoro dodělal

SELECT t.id,t.nazev,p.autor,m
FROM forum_topic t, 
(select z.id_topic,z.autor,max(z.datum) as m from forum_zprava z  group by z.id_topic ) p
where t.id_tema='".$_GET['cislo_topic]."' and t.id=p.id_topic

ale naskytl se problém, dotaz vybere poslední datum ale nevybere autor odpovidajicímu tomu datumu přispěvku..

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: