ConnyFoxMedlem sedan aug. 20011 087 inlägg Håller på att bygga ett forum och undrar följande.
hur räknar jag ut hur många trådar som finns totalt i en kategori
och ännu värre, hur räknar jag ut hur många inlägg som finns i alla dessa trådar.
har följande tabellstruktur.
Kategorier
*ID
*namn
Trådar
*ID
*namn
*belongto
Inlägg
*ID
*namn
*belongto
har ingen aning om hur man räknar ut detta i sql frågan. vanlig count kan man ju..
MySQL = "Select namn, count(trådar), count(inlägg) from kategorier"
Vill kunna lista ut alla kategorier såhär sen
Avdelning Trådar Svar
Motorcycklar 15 312
Bilar 12 243
MelittaMedlem sedan sep. 2003448 inlägg MySQL = "Select namn, count(trådar) as antalT, count(inlägg) as antalI from kategorier"
Funkar det inte så då?
ConnyFoxMedlem sedan aug. 20011 087 inlägg nej det e ju olika tabeller tyvärr där man identifierar vilken kategori tråden hör till med belongto och vilken tråd posten hör till på samma sätt.
så för att räkna ut antal poster totalt i en kategori får man alltså räkna ut antal poster där belongto = id´t på en tråd där belongto = id´t på den kategorin ;D eller åt andra hållet vore nog smidigare.
ConnyFoxMedlem sedan aug. 20011 087 inlägg Ingen som kan? misstänkte att detta inte skulle gå att lösa med bara sql utan krävde asp för att bygga ihop sql frågan, därför jag postade där men å var det ju någon som flyttade den hit..
BrimbaMedlem sedan dec. 19995 875 inlägg declare @categories table([id] int identity (1,1), namn varchar(50))
insert into @categories (namn) values ('Motorcyklar')
insert into @categories (namn) values ('Bilar')
declare @threads table([id] int identity (1,1), namn varchar(50), belongto int)
insert into @threads (namn, belongto) values ('Motorcykeltråd 1', 1)
insert into @threads (namn, belongto) values ('Motorcykeltråd 2', 1)
insert into @threads (namn, belongto) values ('Biltråd 1', 2)
declare @posts table([id] int identity (1,1), namn varchar(50), belongto int)
insert into @posts (namn, belongto) values ('Svar på Motorcykeltråd 1', 1)
insert into @posts (namn, belongto) values ('Svar på Motorcykeltråd 1', 1)
insert into @posts (namn, belongto) values ('Svar på Motorcykeltråd 1', 1)
insert into @posts (namn, belongto) values ('Svar på Biltråd 1', 3)
insert into @posts (namn, belongto) values ('Svar på Biltråd 1', 3)
insert into @posts (namn, belongto) values ('Svar på Motorcykeltråd 2', 2)
select
t1.Avdelning, sum(t1.Trådar) Trådar, sum(t1.Inlägg) Inlägg
from
(
select
t2.namn Avdelning,
count(*) Trådar,
(select count(*) from @posts where belongTo = t3.id) Inlägg
from
@categories t2
inner join @threads t3 on t2.id = t3.belongTo
group by
t2.namn, t2.id, t3.id
) t1
group by
t1.avdelning
/*
Bilar 1 2
Motorcyklar 2 4
*/
LarsGMedlem sedan dec. 200012 464 inlägg Eftersom jag flyttade tråden så får jag väl ge ett svar med hjälp av enbart SQL då.
select category,
(select count(*)
from threads
where belongto = c.id) as threads,
(select count(*)
from posts
inner join threads on threads.id = posts.belongto
where threads.belongto = c.id)
from categories c