pobranie listy tematow i ilosci postow w kazdym temacie

Odpowiedz Nowy wątek
2012-10-17 19:13
zdenek
0

hej, mam taki problem, ponieważ piszę małe forum. chce pobrać listę tematów z danego forum, a wraz z nia ilosc postow dla każdego tematu z innej tabeli. mam takie dane:

SELECT t.id_tematu, t.id_kategorii, t.link, t.wyswietlenia, count(p.id_postu) FROM f_tematy t RIGHT JOIN f_posty p ON p.`id_tematu` = t.id_tematu WHERE t.id_kategorii = '3'

lecz to nie dziala, bo pobiera tylko jeden temat z danego forum. jak to szybko rozwiazac?

Pozostało 580 znaków

2012-10-17 19:33
0

A ciekawe co miałoby zrobić skoro masz tutaj agregat (count) a nie masz żadnego grupowania. Ciesz się że w ogóle ci się uruchomiło cokolwiek, bo większość baz danych napisałaby ci że używasz agregatu bez grupowania i odmówiła posluszeństwa.
count() zwraca JEDNĄ wartość, to się nie dziw że w wyniku masz jeden wiersz.
Domyślam się że group by t.id_tematu to minimum...


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2012-10-17 19:35

Pozostało 580 znaków

2012-10-18 20:06
zdenek
0

dziękuje. faktycznie pomoglo, jakos wylecialo mi z glowy to GROUP BY :/

ale mam jeszcze jeden problem. mianowicie mam taki podzial: fora -> kategorie -> tematy -> posty

i przy pierwszym rzędzie, czyli forach chcę pobrać ilosc wątków w kategoriach, które są w danych forach, oraz ilość postow w danych kategoriach z calego forum, ale niestety też mi nie idzie :(

mam coś takiego, ale to nie dziala:

SELECT f.*, COUNT(t.id_kategorii) FROM f_forum f RIGHT JOIN f_kategorie k ON k.id_forum = f.id_forum LEFT JOIN f_tematy t ON t.id_kategorii = k.id_kategorii GROUP BY t.id_kategorii ORDER BY f.ord ASC

jak sobie z tym poradzic?

Pozostało 580 znaków

2012-10-18 21:50
1

Dobrze rozumiem? Chcesz dla każdej kategorii wyświetlić ile jest wątków i ile jest postów? To chyba jednak count() po id_kategorii dobrym pomysłem nie jest, prawda?


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2012-10-19 07:53
zdenek
0

tzn niezupełnie. układ jest taki


- forum główne 1  // tu pobieram ilość tematów, czyli dla tego przypadku, posty z tematów z kategorii 1 i 2
--- kategoria 1
----- temat 1
-------- post do tematu
-------- post do tematu
-------- post do tematu
-------- post do tematu
----- temat 2
-------- post do tematu
-------- post do tematu
-------- post do tematu
-------- post do tematu
--- kategoria 2
----- temat 3
- forum główne 2
--- podkategoria 3
----- temat 4
-------- post do tematu

sprawa wygląda tak, że fora mają osobne tabele, kategorie osobną, tematy osobną, i posty osobną. struktura wygląda tak:

forum
-------------------------
 id_forum    |    nazwa
-------------------------

kategorie
-------------------------------------------------
 id_kategorii    |     id_forum    |    nazwa
-------------------------------------------------

tematy
----------------------------------------------------
 id_tematu    |    id_kategorii      |     tytul
----------------------------------------------------

posty
-----------------------------------------------
 id_postu    |    id_tematu    |    nazwa
-----------------------------------------------

Pozostało 580 znaków

2012-10-19 11:25
0

Ale ja nadal nie rozumiem co chcesz uzyskać. Namaluj mi ładnie jakiego wyniku się spodziewasz.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2012-10-19 11:46
zdenek
0

więc tak, jestem na forum głównym (forum główne 1) i chcę pobrać ilość postów z tematów, które znajdują się w kategorii 1 i kategorii 2, czyli temat 1 - 4 posty, temat 2 - 4 posty i temat 3 - 0 postów, więc dla forum głównego liczba postów w tym przypadku powinna wyjść 8.

Pozostało 580 znaków

2012-10-19 14:12
0
SELECT f.id_forum, k.id_kategorii, t.id_tematu, COUNT(p.id_postu) FROM forum f LEFT JOIN kategorie k ON f.id_forum=k.id_forum LEFT JOIN tematy t ON t.id_kategorii=k.id_kategorii LEFT JOIN posty p ON p.`id_tematu` = t.id_tematu WHERE k.id_kategorii = '3' GROUP BY 1,2,3 WITH ROLLUP

Pozostało 580 znaków

2012-11-10 18:41
zdenek
0

witam ponownie, niestety z tym rollup'em nie działa. nie pokazuje mi takich danych jak bym oczekiwał ;/

dodatkowo, drugi problem jaki się zrodził jest taki, że na powyzszych danych musze pobrac liste tematow w kolejnosci DESC wg ostatneigo posta, czyli tak jak na forum. wie ktos jak to posortowac?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0