Mailinglisten-Archive |
> > SELECT b.topic,count(*) AS level FROM forum AS a, forum AS > b WHERE b.l > > BETWEEN a.l AND a.r AND b.r BETWEEN a.l AND a.r GROUP BY b.id; > > Du brauchst dafür eine dritte Tabelle. Außerdem kannst Du die > Abfrage verkürzen, weil wenn "b.l BETWEEN a.l AND a.r" dann > ist auch immer "b.r BETWEEN a.l AND a.r". > > select a.topic, count(*) as level from forum as a, forum as > b, forum as c where b.id = $id and a.l between b.l and b.r > and a.l between c.l and c.r group by a.id; danke! das klappt wunderbar, aber nun hab ich wieder einproblem :( also, wenn ich zb folgende struktur habe (als baum): forum1 |-ein thread | |-re: ein thread | | |-re:re:ein thread | |-noch einer | |-re:noch einer so, wenn einer ins forum kommt, sollen logischerweise nur die threads (also keine antworten darauf angezeigt werden), mit: "SELECT a.id,a.topic,a.nick,count(*),b.id AS level FROM forum AS a, forum AS b, forum AS c WHERE b.id=1 AND a.l BETWEEN b.l AND b.r AND a.l BETWEEN c.l AND c.r GROUP BY a.id HAVING count(*)<=2" klappt es auch wunderbar und es kommt folgendes raus: forum1 |-ein thread |-noch einer jetzt soll der user natürlich einen thread aufklappen können damit er die antworten sieht (allerdings immer nur einen level tiefer), zb wenn er auf "ein thread" klickt soll folgendes rauskommen: forum1 |-ein thread | |-re; ein thread | |-noch einer usw. das wollte ich jetzt von mysql mit einem query erledigen lassen, krieg ich aber irgendwie nicht ganz hin :/ hab schon den ganzen tag rumprobiert mit zwei querys und allem möglichen, ist aber nix draus geworden und ich bin kein stück weiter... falls jemand schon mal so etwas gemacht hat oder weiß wie es geht, wärs nett wenn ihr mir den query und ggf einen codeschnippsel in php schickt. mfg andreas teichrib [: www.beezle.de :] [: beezle.darktech.org :] [: root_(at)_beezle.de :] [: icq_25474508 :]
php::bar PHP Wiki - Listenarchive