Jörgen HPMedlem sedan feb. 20012 179 inlägg
Hej,
Först vill jag säga att jag vet att jag skulle behöva en union, men det finns ju inte :(
Har lite kod som ser ut så här:
'##-- Hämta senaste debattör och senaste inlägg --
sql ="Select Profil.req_Username, Profil.AnvId, Inlagg.Inlagg_AnvId, Inlagg.MessId, Inlagg.Flyttat, Inlagg.IntForumId, Inlagg.Subject, Svar.Svar_AnvId, Svar.Svar_MessId " & _
" from Profil " & _
" INNER JOIN Inlagg " & _
" on Profil.AnvId = Inlagg.Inlagg_AnvId " & _
" INNER JOIN Svar " & _
" on Inlagg.Inlagg_AnvId = Svar.Svar_AnvId " & _
" WHERE Inlagg.IntForumId = "& RS("IntForumId") &"" & _
" OR Inlagg.Flyttat = "& RS("IntForumId") &"" & _
" order by Inlagg.MessId DESC LIMIT 1"
SET strSenaste = objDB.Execute(sql)
If strSenaste.EOF then
response.write " "
else
'##-- Skriv ut länk och namn på senaste debattör samt länk till senaste tråden --
end if
Det jag gör är att jag loopar ut alla forumavdelningar. Vid varje forumid ( RS("IntForumId") ) vill jag skriva ut senaste debattör och datum/tid.
Men problemet är att det blir bara rätt vid de tillfällen då senaste inlägget inte innehåller några svar. Finns det svar på en tråd då får jag inte ut rätt namn.
Jag vet att vi diskuterat tabellstruktur från och till (två tabeller Svar och Inlagg) och på den tiden kom vi fram till att denna var dne bästa, men vid vissa tillfällen är det nog inte så.
Hur som helst, några ideer på hur jag kan lösa detta problem på annat sätt?
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
LarsGMedlem sedan dec. 200012 465 inlägg
Jag tycker att det är samma problem som återkommer och det beror på att du skiljer på inlägg och svar.
tabellförslag
topics
-------
ID primary key räknare
topic titel på tråd
posts
------
id primary key räknare
topicid foreign key
is_original sant om första inlägg i tråd
postedBy användare
datePosted datum
post text
------------------
essentitia preter non sans multiplicandum
jorgenMedlem sedan feb. 20012 179 inlägg
Hej,
löste det ganska enkelt efter en promenad. Jag bygger inte om tabellstrukturen nu när det nästan är klart.
En följdfråga om joinar:
Fram tills nu har jag provat mig fram.
Men vad får jag för skillnad i resultatet när jag använder varianterna outer, innner, left och right?
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
LarsGMedlem sedan dec. 200012 465 inlägg
outer är bara ett nyckelord som kan utelämnas dvs
a left outer join b
är samma som
a left join b
som är samma sak som
b right join a
Skillnaden mellan en inner och en outer join är att i en inner join får man enbart de poster som uppfyller villkoret i on.
I en left outer join så får man alla poster från den vänstra tabellen.
tex
a.id
--
1
2
3
b.id
--
1
2
a left join b on a.id = b.id
ger då
1 1
2 2
3 <null>
------------------
essentitia preter non sans multiplicandum
jorgenMedlem sedan feb. 20012 179 inlägg
Tack LarsG, utan dig hade mina sql-kunskaper varit mer obefintliga än de är nu :e
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?