Autor | Zpráva | ||
---|---|---|---|
Tori Profil |
#1 · Zasláno: 24. 8. 2011, 11:34:50
Pěkný den. Upravuju jedno fórum (nějaké vlastní řešení), konkrétně seznam příspěvků od jednoho uživatele. Chtěla bych z každého příspěvku zobrazit jen kus textu + odkaz přímo na ten příspěvek v kontextu tématu (s kotvou, něco jako index.php?threadID=123&stranka=2#3). Potřebuju teda zjistit, kolikátý příspěvek v tom tématu to je. DB schéma je zjednodušeně takovéhle:
-- tabulka forum forumID (int) permission (tinyint) -- min.přístup.práva ... -- tabulka posts postID (int) parentID (int) -- pokud je 0, tak je to první příspěvek, resp. téma. Jinak odkazuje na postID prvního příspěvku tématu. postForum (int) -- ID fóra. Je vyplněné u všech příspěvků. autorID (int) postTime (int) -- čas napsání příspěvku jako unix timestamp .... |
||
Kajman_ Profil * |
#2 · Zasláno: 24. 8. 2011, 13:34:28
Udělal bych to tím korelovaným poddotazem pro těch zobrazených 30 řádků.
select p.*, (select count(*) from posts p2 where p2.parentId = nullif(p.parentId,0) and (p2.postTime < p.postTime or (p2.postTime = p.postTime and p2.postID < p.postID))) nadnim from posts p where p.autorId = 42 order by p.postID desc limit 30 Pro rychlost pomůže vícesloupcový index (postForum, postTime). Stránku a kotvu pak můžeš vypočítat dělením a zbytkem po dělení (s přihlédnutím zda je parentID 0). |
||
Časová prodleva: 3 dny
|
|||
Tori Profil |
#3 · Zasláno: 27. 8. 2011, 13:06:26
Kajman:
Až teď jsem to vyzkoušela, děkuju moc! |
||
Kcko Profil |
#4 · Zasláno: 27. 8. 2011, 20:56:40 · Upravil/a: Kcko
Tori:
Nebude lepší toto: odkaz povede pouze na ID příspěvku viz http://www.vw-club.cz/viewtopic.php?t=119609&p=2281581#p2281581 A počet stránek dopočítáš až v rozkliknutém topicu. Tím myslím jako do stránkování na které stránce se příspěvek nachází. Výhodu to má v tom, že to bude mnohem rychlejší, protože v tomto případě počítáš příspěvky v 1 topicu, jedním relativně snadným dotazem a nikoliv korelovaným jak napsal Kajman, což funguje, ale určitě to bude mnohem pomalejší. |
||
Tori Profil |
#5 · Zasláno: 27. 8. 2011, 21:24:07
Kcko:
Aha ano, to je určitě jednodušší postup než co jsem chtěla původně, děkuju. |
||
Kajman_ Profil * |
#6 · Zasláno: 29. 8. 2011, 00:03:43
Kcko:
Ale tak zase vznikne spousta duplicitních odkazů. Tori: Klidně si zkus oba způsoby. Tipl bych, že s tím indexem tam bude v rychlosti pramalý rozdíl. |
||
Časová prodleva: 13 let
|
0