Jag använder följande kod för att få fram vilka fem i mitt forum som postat flest inlägg:
sql = "select f1.thread_author_id, count(*) as cnt from forum_threads
f1 inner join forum_threads f2 on f1.thread_reply_id = f2.thread_id where
f1.thread_deleted = 0 and f1.thread_adminforum = 0 group by
f1.thread_author_id order by count(*) desc limit 5"
Nu hade jag tänkt kombinera denna med antalet kommentarer i nyheter för att räkna ut vem som har flest kommentarer+inlägg.
För mig är det helt blankt. Jag använder MySQL och kommentarstabellen innehåller ett fält för användarens id, precis som forumtabellen.
Nu tycker jag iofs din tabellstruktur ser lite 'annorlunda' ut så jag kanske har missuppfattat något.
select
f1.thread_author_id, (count(f2.*) + count(n1.*)) as cnt
from
forum_threads f1,
forum_threads f2,
news_comments n1
where
f1.thread_reply_id = f2.thread_id and
f1.thread_deleted = 0 and
f1.thread_adminforum = 0 and
f1.thread_author_id = n1.author_id
group by
f1.thread_author_id
order by
2 desc
limit 5
select f1.thread_author_id,
(select count(*)
from news_comment n1
where f1.thread_author_id = n1.author_id) +
count(*) as cnt
from forum_threads f1,
forum_threads f2
where f1.thread_reply_id = f2.thread_id
and f1.thread_deleted = 0
and f1.thread_adminforum = 0
group by f1.thread_author_id
order by cnt desc
limit 5
Det var en av sakerna jag tyckte var konstig. Kan du inte bara vända påt och gruppera utifrån en användartabell och räkna raderna vars userid överenstämmer?
select t1.user_id, (count(t2.*) + count(t3.*)) as cmnt
from users t1, forum t2, news t3
where t1.id = t2.userId and t1.id = t3.userId
group by 1
order by cmnt desc
limit 1
B.t.w. är osäker att man kan gruppera två counts på det sättet jag gjort.