webForumDet fria alternativet

Visa senaste inlägget i en tråd/kategori i ett forum

Databaser & SQL

2 svar · 245 visningar · startad av westis

Medlem sedan juli 200517 inlägg
Frågan#1

Hejsan,

Jag håller på med ett forum till en hemsida och använder Access för att lagra inläggen. Mitt problem är när jag vill visa vem som gjort det senaste inlägget i en tråd och när.

Följande fält finns i databasen:
post_id (räknare)
post_headline (text)
post_datetime (datum/tid)
post_by_name (text)
post_by_mail (text)
post_by_ip (text)
post_category (tal)
post_referer (tal)
post_text (PM)
post_answers (tal)
post_readed (tal)
post_latest (datum/tid)
post_latest_name (text)

post_category är alltid 0 om det är ett svar på ett inlägg. post_referer tar då post_id-värdet för det ursprungliga inlägg som det är svar på. Alla första-inlägg har post_referer 0.

post_latest och post_latest_name i ett ursprungligt inlägg tar värdet av det senaste inlägget. Så långt är det ok. Men om jag tar bort ett svar, så finns ju ändå det svarets datum och namn som senaste inlägg...

Jag antar att jag med TOP 1 eller MAX kan få fram datumet för det senaste inlägget i resp. tråd och resp. kategori. Men hur?

Så här ser mitt SQL-anrop ut nu (vilket funkar om man inte tar bort ett inlägg):

SQL = "SELECT TOP 1 "&_
	"*, (SELECT Count(post_id) FROM forum_posts WHERE post_category = "& cLng(rstCategorys.Fields(0).Value) & ") AS replies "&_
	 "FROM forum_posts "&_
	 "WHERE post_referer = 0 "&_
	 "AND post_category = "& cLng(rstCategorys.Fields(0).Value) & " "&_
	 "ORDER BY post_latest DESC;"
Medlem sedan maj 20018 027 inlägg
#2

Du kanske ska ha en raderingsfunktion som raderar inläggen genom att sätta en flagga som visar att de är raderade. Då kan du ta med den flaggan i din sql-fråga, och därigenom se till att du endast får ickeraderade inlägg som det senaste.

Medlem sedan juli 200517 inlägg
#3

Jo, det går ju. Men om jag hämtar datumet för senaste inlägget från post_latest måste ju fortfarande det fältet uppdateras. Men jag vill hämta datumet från post_datetime istället. Problemet är att jag inte vet hur SQL-villkoret ska se ut.

Exempelvis om jag vill hämta datum för senaste inlägget i en kategori. Då behöver jag följande i SQL-strängen:

  1. Alla poster med rätt siffra i post_category
  2. Alla poster med en siffra i post_referer som hänvisar till någon av ovanstående poster.

Först då kan jag ju med TOP 1 och ORDER BY post_datetime DESC få fram posten med det senaste inlägget i en viss kategori.

Säkert jätteenkelt, men jag har kört fast...

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)