webForumDet fria alternativet
Logga in / Bli medlem

markera senaste datumet?

Databaser & SQL

7 svar · 577 visningar · startad av voigtann1

Medlem sedan juni 20019 519 inlägg
Trådstart#1

Använder en Access Databas och den ser ut:

ID - Räknare
Forum_id - tal
skribent - tal
datum - datum/tid
inlagg - pm
svar_ID - tal (om det är en "ny tråd" så ska den ha samma värde som ID)

jag vill hitta det högsta senaste svaret i varje tråd som skapas:

SELECT id, forum_id,skribent, senastDatum
FROM inlagg
OUTER JOIN
(Select top(datum) from inlagg as t WHERE  t.svar_id = inlagg.id) as senastDatum ;

Vad gör jag fel? vad tänker jag fel på? :D

Medlem sedan juni 200032 967 inlägg
#2

Jag hade nog försökt mig på något sånt här:

SELECT i.id, i.forum_id, i.skribent, 
   (Select [b]max[/b](datum) from inlagg as t WHERE  t.svar_id = i.id) as senastDatum
FROM inlagg as i
Medlem sedan juni 20019 519 inlägg
#3

kanske en group by också? provade din och då kommer även "svaren" listas men utan något datum

Den fungera till en viss nivå med... jag skulle även vilja ha senaste skribent också.. och vem som "skapade" den... och då tror jag att man måste ha en outer join?

Medlem sedan juni 200032 967 inlägg
#4

Ok, då får du öva på din frågeställning. Jag förstod det som att du ville ha ut datumet för senaste svaret. Att även svaren kommer med får du ju fixa med en WHERE-sats. Jag utelämnade den, för det trodde jag du kunde få dit själv.

Vad menar du med "högsta senaste svaret"?

Jag tror nog också att du kan få lite hjälp om du suger lite på sökfunktionen. Du är inte den förste som velat göra detta i ett forum. ;)

Medlem sedan juni 20019 519 inlägg
#5

jo... sökning :D sökte runt lite och det verkar vara extremt avancerat att göra :D

hittade:
http://www.webforum.nu/showthread.php?t=102214&highlight=senaste+svar

vet inte om det är direkt det jag är ute efter men det "känns" som det är det :D

har svårt med hur inner Joinen ska se ut...

SELECT p.pTopic, u.uName as Creater
FROM tblUser as u 
LEFT JOIN
(select max(s.datum),s.pUser from tblpost as s...

WHERE u.pForum = 1;

vet inte riktigt hur man ska skriva det :r

bifoga en bild på min databas

sql_tes.gif
Medlem sedan juni 20019 519 inlägg
#6
SELECT
p.pTopic,
u.uName as threadCreater,
p.pDate as ThreadStarted

from
tbluser u,
tblpost p

Where
u.uID = p.pUser and
p.pforum=1 and
p.pDate in
(select max(pDate)
        from tblpost
      where tblpost.pAnswer = p.pAnswer)

Nu listas "De senaste" svaren... nästan iallafall.. får datumen att stämma och användaren som gjorde svaret... men "topicen" och "trådskaparens" namn vill jag ändå ha också...

Medlem sedan juni 20019 519 inlägg
#7
SELECT p.pAnswer,u.uName AS LatestUserAnswer, p.pDate AS LatestAnswer, (SELECT count(*) from tblpost where tblpost.pAnswer = p.pAnswer)-1 as antal,(SELECT ptopic from tblpost where pid = p.panswer) as orginalTopic,(SELECT tblUser.uName from tblpost,tblUser where tblpost.pid = p.panswer AND tblpost.pUser = tblUser.uID ) as trådskapare
FROM tbluser AS u, tblpost AS p
WHERE u.uID = p.pUser and
p.pforum=1 and
p.pDate in
(select max(pDate)
        from tblpost
      where tblpost.pAnswer = p.pAnswer);

Så ser den ut när jag får ut allt det jag vill få ut... inte den bästa SQL frågan direkt men mina kunskaper är begränsade...

Medlem sedan juni 20019 519 inlägg
#8

Borde man inte kunna få

(SELECT ptopic from tblpost where pid = p.panswer) as orginalTopic,
(SELECT tblUser.uName from tblpost,tblUser where tblpost.pid = p.panswer AND tblpost.pUser = tblUser.uID ) as trådskapare

att se bättre ut?

258 ms totalt · 4 externa anrop · v20260731065814-full.81e7e81c
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)