webForumDet fria alternativet

query.. dubbla counts?

6 svar · 246 visningar · startad av P

PMedlem sedan jan. 20012 107 inlägg
#1

Hmm en query som har tagit upp min skalle ett tag nu!

Har en liten skiss här: http://p.latmask.com/sql1.jpg

Jag vill ha en tabell liknande denna:
Name|Trådar|Inlägg

Name = från tabellen

Trådar = antalet trådar för det aktuella namnet(id:t), CategoryID = Category. Och RotID = 0

Inlägg = samma som över men endast CategoryId=Category

Har denna kod:

SELECT 
 `forum`.`Category`, 
 count(*) AS `NumbPost` 
FROM 
 `forum`, 
 `forumcategory` 
WHERE 
 (`forumcategory`.`ModuleID` = '2') AND 
 (`forumcategory`.`CategoryID` = `forum`.`Category`) 
GROUP BY 
 `forum`.`Category`

Men den ger mig inte antalet trådar, kan ju lägga till RotID=0 dvs att den ger mig alla trådar men då får jag inte de andra, alla posterna.

Är ingen expert på detta som kanske märks...
/(MySql)

LarsGMedlem sedan dec. 200012 465 inlägg
#2
SELECT 
 forum.Category,
 sum(case when RotId = 0 then 1 else 0 end) as NumbCat, 
 count(*) AS NumbPost
FROM  forum,  forumcategory
WHERE  forumcategory.ModuleID = 2
     AND  forumcategory.CategoryID = forum.Category 
GROUP BY  forum.Category
PMedlem sedan jan. 20012 107 inlägg
#3

Hmm vill nästan fungera, får felet "Invalid token 'case' at position 6 of line 3." Men det fungerar ibland...

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Hur då "fungerar i bland"? (kör bara ibland då hö hö).

Hur anropar du frågan? PHP? Hur ser den koden ut?

PMedlem sedan jan. 20012 107 inlägg
#5

;)

Ahh nu fungerar det som det ska. Kör asp.net och EMS Mysql Manager 2 och då får jag felmeddelandet. Satsen verkar vara för avancerad för QueryBuilder där.

Fungerar dock utmärkt mot mysql i scriptet!

Tack Lasse!

PMedlem sedan jan. 20012 107 inlägg
#6

Har stött på problem. Om jag inte har några poster i forum, men därimot poster i kategorier så visas inte dessa. Ahh, kanske får bli att bygga om allt ihop!

LarsGMedlem sedan dec. 200012 465 inlägg
#7
SELECT 
 forum.Category,
 sum(case when RotId = 0 then 1 else 0 end) as NumbCat, 
 count(forum.category) AS NumbPost
FROM  forumcategory left outer join  forum
  on  forumcategory.CategoryID = forum.Category 
WHERE  forumcategory.ModuleID = 2 
GROUP BY  forum.Category
129 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
126 ms — hämta tråd, inlägg och bilagor (db)