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å?
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
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.
Sorry, tänkte inte på det. Trodde alla visste vad jag gjorde....
Gör om, gör rätt!
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
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