webForumDet fria alternativet

problem med nestlad sql sats

7 svar · 817 visningar · startad av rollo

rolloMedlem sedan aug. 2001203 inlägg
#1

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
#2
select *
  from db_kb_i dki
 left
  join db_kb_comment dkc
    on dki.id = dkc.t_id
rolloMedlem sedan aug. 2001203 inlägg
#3

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
#4

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
#5

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
#6

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
rolloMedlem sedan aug. 2001203 inlägg
#7

HELT JÄKLA LYSANDE!

Bock & Tack!

Peter SMedlem sedan dec. 20025 483 inlägg
#8

. :bire

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)