Autor | Zpráva | ||
---|---|---|---|
p_a_v_e_l Profil * |
#1 · Zasláno: 15. 2. 2009, 13:05:52
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 * |
#2 · Zasláno: 15. 2. 2009, 14:32:29
Mrkněte do faq na druhý příklad u Nalezení řádků s maximální (minimální) hodnotou.
|
||
p_a_v_e_l Profil * |
#3 · Zasláno: 15. 2. 2009, 17:29:33
díky mrknu..snad to pochopim:)
|
||
Kcko Profil |
#4 · Zasláno: 15. 2. 2009, 18:39:25
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 * |
#5 · Zasláno: 15. 2. 2009, 18:59:43
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 |
#6 · Zasláno: 15. 2. 2009, 22:28:53
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 * |
#7 · Zasláno: 16. 2. 2009, 10:43:56
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.
|
||
Časová prodleva: 3 dny
|
|||
p_a_v_e_l Profil * |
#8 · Zasláno: 19. 2. 2009, 21:22:40
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 |
#9 · Zasláno: 19. 2. 2009, 21:36:37
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 * |
#10 · Zasláno: 19. 2. 2009, 21:47:51
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 * |
#11 · Zasláno: 20. 2. 2009, 09:04:07
Ještě jednou se mrněte do faq. Musíte se inspirovat druhým příkladem.
|
||
p_a_v_e_l Profil * |
#12 · Zasláno: 20. 2. 2009, 14:27:37
asi nemam tak dokonalou schopnost se inspirovat..ale zkusim to...
|
||
p_a_v_e_l Profil * |
#13 · Zasláno: 20. 2. 2009, 17:27:32
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.. |
||
Časová prodleva: 15 let
|
0