MYSQL: Het aantal reacties optellen bij een bepaalde 'id' en in een kolom zetten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Francoi gckx

Francoi gckx

11/02/2014 14:49:36
Quote Anchor link
Ik heb een tabel met vacatures en een tabel reacties
de koppel_id is bv_id,

Ik wil naast het ophalen van de rows van vacatures per opgehaalde vacature een extra kolom
dernaast hebben met het aantal reacties.

Dan kan ik zeggen: vacature "jantje" heeft "5" reacties en vacature "piet" heeft er maar "1" of geen

Ik heb het geprobeerd met (in het kort):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT
            bv.bv_id,
            bv.bv_functie,
CONCAT(count(bsol.bsol_id)) as aantal_bsol
LEFT JOIN beheer_solicitaties bsol
            ON bv.bv_id = bsol.bv_id
GROUP BY  bsol.bsol_id

Het resultaat is verkeerd.
Ik kan nog niet verzekerd aan de slag met MySQL, wie kan de syntax opbouw hiervan verbeteren? dank
 
PHP hulp

PHP hulp

21/12/2024 13:16:11
 
Michael -

Michael -

11/02/2014 14:59:47
Quote Anchor link
Ik mis de FROM en waar komt bv vandaan? En Waarom CONCAT?
Hiermee zou je iets meer in de richting moeten komen (waarschijnlijk nog niet helemaal juist)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
SELECT
    bv.bv_id,
    bv.bv_functie,
    count(bsol.bsol_id) as aantal_bsol
FROM beheer_vacatures AS bv
LEFT JOIN beheer_solicitaties AS bsol
    ON bv.bv_id = bsol.bv_id
GROUP BY  bsol.bsol_id
Gewijzigd op 11/02/2014 15:00:59 door Michael -
 
Erwin H

Erwin H

11/02/2014 15:16:22
Quote Anchor link
Alleen de GROUP BY gaat nu precies verkeerd om. Een GROUP BY moet je juist uitvoeren over alle niet aggregate kolommen in de SELECT, dus juist niet over de enige aggregate kolom:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
SELECT
    bv.bv_id,
    bv.bv_functie,
    count(bsol.bsol_id) as aantal_bsol
FROM beheer_vacatures AS bv
LEFT JOIN beheer_solicitaties AS bsol
    ON bv.bv_id = bsol.bv_id
GROUP BY  
    bv.bv_id,
    bv.bv_functie
 
Francoi gckx

Francoi gckx

11/02/2014 15:19:43
Quote Anchor link
Nu zie ik de essentie van GROUP_BY :D het heeft zo gewerkt en een kleine detail met GROUP_BY geleerd, Thx

Toevoeging op 11/02/2014 15:26:47:

Alhoewel Ger het mij ook uitgelegd ("onverwachte resultaten als je group_by vergeet") maar nu zit het echt in mij hoofd
Gewijzigd op 11/02/2014 15:24:52 door Francoi gckx
 
Erwin H

Erwin H

11/02/2014 15:44:32
Quote Anchor link
Voor als je ook precies wilt weten waarom: http://rpbouman.blogspot.nl/2007/05/debunking-group-by-myths.html
(de uitleg over GROUP BY is hier wel goed, het hele 'myth debunk' verhaal is weer iets anders).
 
Francoi gckx

Francoi gckx

11/02/2014 17:59:20
Quote Anchor link
Ok joo interessante site om te bekijken
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/02/2014 18:44:50
Quote Anchor link
Om heel eerlijk te zijn zouden er bij mij een hele hoop queries fout gaan, als ONLY_FULL_GROUP_BY op één zou staan.

Postgres staat toe dat je een group_by doet op een PK zolang de andere kolommen in de SELECT bij elke rij dezelfde waarde behouden (i.e functioneel afhankelijk van de PK).
Daar heb ik dat van overgenomen, blijkt het ook nog eens naar de SQL standaard te zijn.
 



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.