webForumDet fria alternativet
Logga in / Bli medlem

query.. dubbla counts?

Databaser & SQL

6 svar · 246 visningar · startad av P

Medlem sedan jan. 20012 204 inlägg
Trådstart#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)

Medlem sedan dec. 200012 464 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
Medlem sedan jan. 20012 204 inlägg
#3

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

Medlem sedan dec. 200012 464 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?

Medlem sedan jan. 20012 204 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!

Medlem sedan jan. 20012 204 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!

Medlem sedan dec. 200012 464 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
646 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
518 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
518 ms — ändringar (db)