selecteren op SUM resultaat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mar kla

mar kla

15/02/2015 22:33:45
Quote Anchor link
Met de onderstaande code wil ik spelers uit de database selecteren die 100 wedstrijd of meer gespeeld hebben.

Daarvoor heb ik twee waardes: een basis plek = Basis, en een inval beurt = Wisselin

Nu wil ik graag iets selecteren in de trend van De Basis + Wisselin< 101

een :
Where SUM( IF( dt.af_DetailType_ID IN ( 1, 3 ) , 1, 0 ) ) < 101
of
LIMIT total

weken dus niet

wat kan/moet ik doen om het wel voor elkaar te krijgen?

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
SELECT
 p.Player_Achternaam,
 p.Player_Voornaam,
 p.Player_Tussenvoegsel,
 SUM( IF( dt.af_DetailType_ID = '1', 1, 0 ) ) AS BASIS,
 SUM( IF( dt.af_DetailType_ID = '3', 1, 0 ) ) AS Wisselin,
 SUM( IF( dt.af_DetailType_ID IN ( 1, 3 ) , 1, 0 ) ) AS total
FROM
 af_details dt,
 af_players p,
 af_games g
WHERE
 af_DetailType_ID IN ( 1, 3 )
AND
  p.Player_ID = dt.af_Player_ID
AND
  g.Game_ID = af_Game_ID
AND
 GameType_ID IN ( 1, 2 )
GROUP BY
dt.af_Player_ID
ORDER BY total DESC
Gewijzigd op 15/02/2015 22:34:11 door Mar kla
 
PHP hulp

PHP hulp

30/11/2020 08:48:16
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/02/2015 09:37:30
Quote Anchor link
Implicite joins zijn niet volgens de huidige SQL standaard, leer dit af.

In SQL wordt eerst geselecteerd en gefiltered, dan gegroepeerd (de where staat voor de group by), dus je kan geen aggegrate functies in de where clause gebruiken.

Je hebt hier GROUP BY ... HAVING nodig:

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
SELECT
p.Player_Achternaam,
    p.Player_Voornaam,
    p.Player_Tussenvoegsel,
     SUM(dt.af_DetailType_ID = 1) AS BASIS,
    SUM(dt.af_DetailType_ID = 3) AS Wisselin,
    COUNT(*) AS total
FROM
    af_players p
JOIN
    af_details dt
    ON p.Player_ID = dt.af_Player_ID
JOIN
    af_games g
    ON g.Game_ID = af_Game_ID
WHERE
    af_DetailType_ID IN (1,3)
    AND
    g.GameType_ID IN (1,2)
GROUP BY
    dt.af_Player_ID
    HAVING total >= 100
 
Mar kla

mar kla

16/02/2015 21:30:13
Quote Anchor link
Dat is hen !!


Thanks Ger
 



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.