@ŁF: kwestia użycia JOIN/WHERE z warunkiem łączenia jest dyskusyjna. Jedni twierdzą, że jedna metoda jest wydajniejsza, inni, że druga. Nie chcę się spierać, bo ekspertem w tej dziedzinie nie jestem.
@maniek: szczerze powiedziawszy pierwszy raz widzę takie rozwiązanie. Samemu z powodzeniem w MySQL'u używam JOIN tabela ON(warunek) JOIN tablela2 ON(warunek2) itd.
@shivanwk: Podana przeze mnie i przez ŁF metoda zwraca Ci ilości postów dla wszystkich kategorii (osobno dla każdej). Podstawowa zasada oszczędności to ograniczać ilość zapytań. Jeśli zamierzasz w pętli dla każdej kategorii wykonywać takie zapytanie, to zmień sposób działania na bazie, bo zajmie Ci to o wieki więcej czasu. Jeśli potrzebujesz tylko dla jednej, to dodajesz warunek WHERE fora.id=''.$id'', czy jak tam masz to nazwane.
//Dopisane:
ŁF: Mam wrażenie, że w tym Twoim WHERE powinno być coś w stylu posty.temat=tematy.id, bo nie masz kategorii/subforum dla każdego posta podanej.
// whatever, bo w sumie chodzi o podpowiedź a nie gotowe zapytanie - Ł