mam podział na kategorie z wykorzystaniem Modified Preorder Tree Traversal ( left i right ), oraz powiazane z tymi kategoriamii pewne rekordy.
tabela kategorii:
kategorie (idKategorii, title, lft, rgt)
tabela z wpisami:
wpisy (idWpisu, title, content, idKategorii )
wszystko gra i buczy przy pobieraniu danych, ale nie wiem jak najwydajniej pobrac informacje o kategoriach ( standardowo mam:
)
SELECT * FROM kat WHERE lft BETWEEN 1 AND 18 ORDER BY lft ASC;
tak, aby oprocz pol id, title, lft, rgt mieć jeszcze COUNT(ogloszenia.id) dla kazdej kategorii wliczajac wpisy w podkategoriach.
Oczywiscie moge to w foreach w php robic, ale nie chce sypac zapytaniami do bazy jak ziarnem do kur.
Jak narazie wykobinowalem takie cos:
SELECT kat.title, COUNT( ogloszenia.id ) AS ile, kat.lft AS xlft, kat.rgt AS xrgt FROM ogloszenia, kat WHERE ogloszenia.categoryId IN ( SELECT kat.id FROM kat WHERE kat.lft BETWEEN xlft AND xrgt ) GROUP BY kat.id
To produkuje mi tabele jakiej sie spodziewam, z wyjatkiem kategorii do ktorych nie sa przypisane zadne ogloszenia. Jak zmodyfikowac to zapytanie, aby uwzglednialo kategorie, w ktorych nie ma ogloszen?