ska pussla ihop ett forum men har fastnat på detta:
databasen är av klassisk struktur i ms-sql2000
tblcategories
-categoryid
tblQuestions
-questionid
-categoryid
-regdate
tblReplies
-replyid
-questionid
-regdate
av detta vill jag få ut:
1. antal svar (tblReplies)
2. vem som skrev senast i kategorin
(det är här det kör ihop sig, är regdate nyare i tblQuestions än i tblReplies så ska frågan visas annars svaret!)
detta vill jag ha i en sql-sats om det går :)
LarsGMedlem sedan dec. 200012 464 inlägg Du lagrar alltså frågan i en questions och svaren i replies?
Jag skulle lagra alla inlägg i en tabell och bara ha titel/startDatum/categori i questions
Då skulle regDate i replies alltid innehålla datum för senaste inlägg.
Men men
Antal svar (På en fråga eller inom en kategori eller totalt?)
select count(*) from tblReplies where questionid = 4711
Senast inlägg i en kategor
select max(coalesce(r.regdate,q.regdate))
from tblQuestions q left outer join tblReplies r
on q.questionid = r.questionid
where categoryid = 4711
LarsG skrev:
Jag skulle lagra alla inlägg i en tabell och bara ha titel/startDatum/categori i questions
Då skulle regDate i replies alltid innehålla datum för senaste inlägg.
Men men
det skulle jag också om jag kunde börja från början!
coalesce funkar inte riktigt, den tar alltid värdet från första kolumnen som man skrivit.
skulle behöva jämföra högsta värdena först från de två tabellerna och sen visa det som är högst.
sedan var tanken att lägga in count(*) i samma sats om det går?
LarsGMedlem sedan dec. 200012 464 inlägg Vill du ha maxdatum inom varje kategori
select categoryid,max(case when q.regDate > r.regdate then q.regDate else r.regdate) as maxdate
from tblquestions q left join tblreplies
on q.questionid = r.questionid
group by categoryid