webForumDet fria alternativet

forum: hämta fråga + senaste svar

Databaser & SQLur Databashanterare & SQL

3 svar · 388 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

tjena, jag vet, det finns många frågor med liknande problem,
men ingen är precis som min.

har denna kod:

Select top 5 
	t.IDno, t.Heading, t.Notes, t.CreateDate, 
	t2.IDno As Replyid, t2.Heading As Reply_Heading, t2.CreateDate As Reply_CrateDate
From 
	iD_Threds t
Left Join 
	iD_Threds t2 On t.IDno = coalesce(t2.Relationid, t2.IDno)
Where 
	t.Relationid is null
Order By 
	t2.CreateDate Desc

den ska hämta de 5 senaste frågorna med de senaste inläggen i.
problemet är att samma fråga visas flera gånger.
kan man göra en gruppering på nått vis, eller lär jag skriva om satsen?
(se bild för resultat av selectsatsen)

forum.gif
Medlem sedan juni 20003 076 inlägg
#2

Inte trodde jag det var så svårt! :(
Om det inte går att gruppera kan man istället inserta dessa i en temp-tabell och sedan deleta poster där flera av samma id finns?
Jag vill bara ha ett av varje IDno (se första kolumnen i bilden ovan)

Medlem sedan juni 20003 076 inlägg
#3

Glöm det där med att skapa en temporär tabell och sen deleta, blir aldelens för ineffektivt om det är många poster i tabellen.
Så kvar är då grupperingen eller möjligtvis att man kan skriva om satsen på nått vis.
Frågan är bara hur! :(

Medlem sedan dec. 200012 464 inlägg
#4
select top 5 q.heading, q.idno, q.notes, q.createDate,
       r.heading, r.idno, r.notes, r.replydate
from id_threads as q left join 
  (select idno,heading,notes, createDate as replydate
     from id_threads as r 
    where createDate in ( 
          select max(createDate) 
            from id_threads
           where r.relation_id = relation_id)) as r 
  on q.idno = r.relationid
where q.relation_id is null
order by coalesce(replyDate,createDate) desc
136 ms totalt · 3 externa anrop · v20260731065814-full.8a4e7caf
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)