rolloMedlem sedan aug. 2001203 inlägg Jag har byggt ett mini forum får vårt intranät och jag vill sortera trådarna efter uppdateringsdatum. Det är samma sak som första sidan här, där de trådar som senast fått kommentarer visas
Hur menar jag?
Jo, jag har tabellerna db_kb_i som innehåller alla huvudtrådar och
db_kb_comment innerhåller alla kommentarer.
De är kopplade samman med hjälp av ID från db_kb_i som motsvarar t_id i db_kb_comment
Jag måste ha en nestlad sql sats för att detta skall funka, men jag har stirrat mig blind på detta nu i snart 1 dag och börjar bli frustrerad på det
Min tanke var
SQL14 = " SELECT * FROM db_kb_i WHERE id IN (SELECT t_id FROM db_kb_comment)"
Men den SQLen ger ju bara trådar som fått kommentarer, hur får jag resten också?
:q
Peter SMedlem sedan dec. 20025 483 inlägg select *
from db_kb_i dki
left
join db_kb_comment dkc
on dki.id = dkc.t_id
rolloMedlem sedan aug. 2001203 inlägg RÄTT!!
Men tyvärr så uttryckte jag mig fel!
Jag vill visa trådarna och inte kommentarerna och jag vill även visa de trådar som inte har kommentarer och jag vill bara att tråden skall visas 1 gång
Peter SMedlem sedan dec. 20025 483 inlägg Det vore kanon om du utgick från @nders klistrade tråd i forumet när du beskriver problemet. Då blir det enklare att hjälpa till.
select *
from db_kb_i i
left
join ( select c.t_id tid
, max(c.datumkolumn) as dte
from db_kb_comment c
where c.datumkolumn is not null
group
by c.t_id) as dt
on i.id = dt.tid
order
by iif(dt.dte is not null, dt.dte, i.datumkolumn) desc
Av någon outgrundlig anledning utgick jag från att MS Access användes.
rolloMedlem sedan aug. 2001203 inlägg Sorry, tänkte inte på det. Trodde alla visste vad jag gjorde....
:OO
Gör om, gör rätt!
:h
Detta vill jag
Jag har ett forum på vårt intranät.
Sidan som listar alla trådarna, som lagras i db_kb_i, skall sorteras efter datum, men de trådar som fått kommentarer, sparade i db_kb_i, skall komma före i listan.
På samma sätt som på så många andra forum
Databasen är en SQL Server 2000
Tabellerna ser ut som följer
db_kb_i
id
falt01
.
falt05
text01
datum
vem
db_kb_comment
id
t_id
falt01
text01
datum
Peter SMedlem sedan dec. 20025 483 inlägg Ok. Vad får du för resultat med
select *
from db_kb_i i
left
join ( select c.t_id tid
, max(c.datum) as dte
from db_kb_comment c
where c.datum is not null
group
by c.t_id) as dt
on i.id = dt.tid
order
by coalesce(dt.dte, i.datum) desc