webForumDet fria alternativet

Forum-fråga: count()

2 svar · 345 visningar · startad av skyman

skymanMedlem sedan juli 20012 450 inlägg
#1

Jag har en databas i ett forum som ser ungefär ut som detta nedan:
(did: discussion-id (uniqe), _did: pekar på ett did som det är ett svar på, gid: group-id... det är väl det som måste förklaras)

did	_did	dname	uid	gid	datum		text
77 	0 	Hej! 	1 	4 	1121116222 	Välkomna till denna fina sida!
78 	77   		7 	4 	1121119164 	Stabilt!
86 	77   		7 	4 	1121119164 	Stabilt!
79 	0 	Ny sida	1 	4 	1121150065 	Pga att köpet har dragit ut på tiden så fruktansvä... 
80 	78   		7 	4 	1121119164 	BLa bla bla bla
81 	78   		7 	4 	1121119164 	BLa bla bla bla
82 	78   		7 	4 	1121119164 	BLa bla bla bla
83 	78   		7 	4 	1121119164 	BLa bla bla bla
84 	78   		7 	4 	1121119164 	BLa bla bla bla
85 	78   		7 	4 	1121119164 	BLa bla bla bla
87 	0 	Fest	1 	2 	1121150065 	Fest på fredag...
88 	87   		7 	2 	1121119164 	BLa bla bla bla
89 	87   		7 	2 	1121119164 	BLa bla bla bla
90 	87   		7 	2 	1121119164 	BLa bla bla bla
91 	87   		7 	2 	1121119164 	BLa bla bla bla
92 	87   		7 	2 	1121119164 	BLa bla bla bla

Jag vill få ut ett sql-svar enligt nedan:

did	gid	dname		antal		antal_nya
77	4	Hej!			3		1
79	4	Ny sida		7			5
87	2	Fest			6		1

Där antal är diskussioner inom rubrikerna Hej, Ny sida och Fest och antal_nya är nya inlägg som är nya sedan jag loggade in senast (lastlogin sparas i sessions)...

Skulle vara otroligt tacksam om någon kan klura ihop en fråga till detta, det går ju annars med fler satser... Gissar att det handlar om nästade satser och jag har legat lite lågt med programmerandet ett par år nu...

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Om du vill hantera att det kan finnas svar i godtyckligt många nivåer så måste du ha stöd för rekursiv SQL. Annars så får man hantera det genom att bara gå ett visst antal nivåer ner när man räknar svar eller så får man sköta rekursionen från klienten.

skymanMedlem sedan juli 20012 450 inlägg
#3

Jag använder mysql och phpMyAdmin 2.5.7-pl1. Finns det rätt stöd i det?
Provade denna och det funkade inte:

SELECT  * , ( 
SELECT count(  *  ) 
FROM intern_discussion
WHERE 1  ) AS antal
FROM  `intern_discussion` 
WHERE did =10
126 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)