COUNT telt niet goed

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kay Kay

Kay Kay

17/03/2009 22:27:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT
    c.naam,
    c.id,
    c.beschrijving,
    COUNT(r.id) as reacties,
    COUNT(t.id) as topics
FROM
    categorie as c
    
LEFT JOIN
    topics as t
    ON (c.id = t.cat)

LEFT JOIN
    reacties_forum as r
    ON (c.id = r.cat)

GROUP BY
    c.naam,
    c.id,
    c.beschrijving
ORDER BY
    c.sort ASC

Ik heb nu 2 topics en 3 reacties in een categorie en hij telt 6 topics en 6 reacties.
Wat is er fout?
 
PHP hulp

PHP hulp

18/04/2024 07:11:21
 
Willem Jan Z

Willem Jan Z

17/03/2009 22:52:00
Quote Anchor link
Heb even geen tijd er heel uitgebreid naar te kijken, maar horen je reacties niet gekoppeld aan een topic in plaats van een categorie?
 
Kay Kay

Kay Kay

18/03/2009 15:30:00
Quote Anchor link
Euhm, ja, dat moet niks uit maken. Ik heb het ook geprobeerd. Ik wil het aantal reacties in een categorie hebben, dus dan lijkt het me logischer om de reacties aan een categorie te koppelen. Natuurlijk zijn de reacties ook gekoppeld aan een topic :)
 
Kay Kay

Kay Kay

19/03/2009 16:28:00
Quote Anchor link
Kickje :)
 
Jesper Diovo

Jesper Diovo

19/03/2009 17:28:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT
  COUNT(*) AS aantal
FROM
  reacties
GROUP BY cat


En je hebt het aantal reacties per categorie :-). Je kunt dit makkelijk uitbreiden naar een query (met subqueries dus) die doet wat jij wilt.
 
Kay Kay

Kay Kay

19/03/2009 19:35:00
Quote Anchor link
En hoe kan ik dat dan toepassen?
 
Ed

Ed

19/03/2009 20:06:00
Quote Anchor link
Je kan sowieso de left joins combineren, ze zijn beide left joins.
 
Kay Kay

Kay Kay

19/03/2009 21:41:00
Quote Anchor link
Het werkt op deze manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SELECT
    c.naam,
    c.id,
    c.beschrijving,
    COUNT(DISTINCT r.id) as reacties,
    COUNT(DISTINCT t.id) as topics
FROM
    categorie as c
    
LEFT JOIN
    topics as t
    ON (c.id = t.cat)

LEFT JOIN
    reacties_forum as r
    ON (c.id = r.cat)

GROUP BY
    c.naam,
    c.id,
    c.beschrijving
ORDER BY
    c.sort ASC

Maar ik denk dat niet dat dit echt optimaal is/het nog wel beter kan..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.