webForumDet fria alternativet

Lista kommentarer till nyheter

Databaser & SQL

2 svar · 314 visningar · startad av janfang

Medlem sedan okt. 200058 inlägg
Frågan#1

Hej
Jag behöver hjälp med en sql-sats som hämtar ut kommentarer till olika nyheter i en lista. Jag har två tabeller, nyheter och kommentarer. Jag skulle vilja lista alla nyheter i en lista med antalet kommentarer och senaste kommentaren till nyheten på detta sätt:

Nyhet		Kommentarer	Senaste
=================================================================
NYHET1		5 kommentarer	2009-02-09 08:00:00 Kalle skrev "hej, en kommentar"

NYHET2		2 kommentarer	2009-02-09 09:00:00 Kalle skrev "hej , en kommentar till"

NYHET3		10 kommentarer	2009-02-07 09:00:00 Pelle skrev "hej"

Databas: MSSQL
Databasstruktur:

Nyheter
===============
nyhetId
nyhetRubrik
nyhetBild

Kommentarer
===============
kommentarId
kommentarNyhetsId
kommentarDatum
kommentarNamn
kommentarInnehall (text)

Har ni något tips på hur jag ska utforma SQL-satsen?
mvh
Jan

Medlem sedan dec. 200012 464 inlägg
#2
select n.nyhetRubrik,
       (select count(*) 
          from kommentarer
         where kommentarNyhetsid = n.nyhetid) +
       case when (select count(*) 
          from kommentarer
         where kommentarNyhetsid = n.nyhetid) = 1 then ' Kommentar' 
           else ' kommentarer' end as kommentarer,
       k.kommentarDatum,
       k.kommentarInnehåll
  from nyheter as n
  left joinkommentarer as k on n.nyhetId = k.kommentarNyhetsId
   and k.kommentarDatum = 
      (select max(kommentarDaum)
         from kommentarer as kk
        where k.kommentarNyhetsId = kk.kommentarNyhetsId)
Medlem sedan okt. 200058 inlägg
#3

Tack så mycket för hjälpen! Det fungerar perfekt!

258 ms totalt · 4 externa anrop · v20260731065814-full.bd618308
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)