EkströmMedlem sedan feb. 20022 594 inlägg Hej!
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.
Hoppas detta är enkelt :)
Har ett liknande problem. LarsG, var håller du hus?
cyprysMedlem sedan dec. 20003 563 inlägg 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
LarsGMedlem sedan dec. 200012 464 inlägg 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
EkströmMedlem sedan feb. 20022 594 inlägg Saken är den att det inte är inte säkert att de som kommenterat nyheter också skrivit i forumet. Går det ens att lösa i en SQL-sats?
cyprysMedlem sedan dec. 20003 563 inlägg 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.
LarsGMedlem sedan dec. 200012 464 inlägg Nej, count(t2.*) kommer alltid att få samma värde som count(t3.*). Du räknar totala antalet rader i resultatet i joinen grupperat per användare.