select count(threadid) as antal, topic from forum f left outer join thread t on f.forumid = t.forumid group by topic
------------------
essentitia preter non sans multiplicandum
3 svar · 233 visningar · startad av NETwork
Jag har gjort ett forum som bygger på två tabeller. Det fungerar fint, men jag har inte lyckats klura ut hur jag ska göra för att räkna antal svar i en tråd.
Tabellerna ser ut så här
Forum:
- ForumID
- Topic
- Name
- Date
Thread:
- ThreadID
- ForumID
- Name
- Message
- Date
När jag fyller förstasidan på forumet så behöver jag alltså på något sätt hämta hur många ThreadID det finns i tabellen Thread för varje ForumID. Har förstått att man ska göra en join men fattar inte riktigt hur.
Nån som kan hjälpa mig?
------------------
Jag kan inte komma på någon signatur.
select count(threadid) as antal, topic from forum f left outer join thread t on f.forumid = t.forumid group by topic
------------------
essentitia preter non sans multiplicandum
Tack! Om du orkar så får du väldigt gärna förklara lite hur det fungerar. :)
count(threadid) as antal
Här räknar du alla threadid och lägger värdet i variabeln (säger man variabel i sql?) "antal", eller? Alltså det totala antalet inlägg i hela forumet?
forum f
Du byter bara namn på forum till f?
forum f left outer join thread t on f.forumid = t.forumid group by topic
Här hängde jag inte med riktigt... vad gör en left outer join? Och hur lagras antal svar för varje tråd?
------------------
Jag kan inte komma på någon signatur.
count(threadid) as antal
Det här är bara för att namnge fältet, så man kan inte tala om en variabel i detta sammanhang.
forum f
ja, namnbytet är mest en bekvämlighet. I vissa fall, om man har samma tabell flera gånger, så måste man använda denna teknik för att kunna särskilja olika instanser.
forum f left outer join thread t on f.forumid = t.forumid group by topic
en left outer join innebär att man tar med alla poster i den vänstra tabellen oavsett om det finns ett matchande värde i tabellen thread eller inte. Om det inte finns någon match så blir de kolumner som skulle hämtats från tabellen thread ersatta med null. Det är därför jag använder columnnamnet i count ovan.
count(columnnamn) innebär att man inte tar med de värden som är null i räkningen. På så sätt blir det 0 på de ämnen som inte har något svar.
------------------
essentitia preter non sans multiplicandum