Archief - SQL: meerdere counts

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Radiance

Legacy Member
Om te beginnen, een basis idee van de tabellen :

Code:
Projects
- id

Views
- project
- user

Comments
- id
- project

Ik heb dus een aantal projecten, ik houd bij of user X een bepaald project reeds bekeken heeft in de tabel Views, zodat er niet meer views gegenereerd kunnen worden door te refreshen
Nu wil ik in een overzicht project info kunnen weergeven alsook hoeveel comments & hoeveel views een project heeft.

Code:
SELECT Projects.id, 
       COUNT(Comments.id) AS comments,
       COUNT(Views.user) AS views
FROM Projects 
    LEFT JOIN Comments ON Projects.id = Comments.project
    LEFT JOIN Views ON Projects.id = Views.project
GROUP BY id

Eén van beiden apart geeft een juiste count, tesamen geven ze steeds een optelling weer ofzo, in elk geval niet juist.
Ik veronderstel dat het probleem zit bij de group, maar geraak er niet uit.

Wie weet raad ?

servi

Legacy Member
het teruggegeven resultaat zal allicht het produkt zijn.

Normaalgezien mag je in een (sub)query maar max 1 COUNT hebben staan, het feit dat Mysql dat toelaat, is eigenlijk een afwijking.

kort en krachtig : 2 queries maken en geen COUNTS proberen te combineren.


edit : krijg je overigeens geen "ambigous error" op de lijn GROUP BY id (zowel projects als comments hebben een id)?

Radiance

Legacy Member
servi zei:
het teruggegeven resultaat zal allicht het produkt zijn.

Normaalgezien mag je in een (sub)query maar max 1 COUNT hebben staan, het feit dat Mysql dat toelaat, is eigenlijk een afwijking.

kort en krachtig : 2 queries maken en geen COUNTS proberen te combineren.
Ah, dat weten we dan ook weeral.
Thanks

servi zei:
edit : krijg je overigeens geen "ambigous error" op de lijn GROUP BY id (zowel projects als comments hebben een id)?
In mijn originele query staat weldegelijk Projects.id, ik had er wat statements uitgesmeten om hier te posten en blijkbaar iets teveel weggedaan :)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan