Query Probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

The Beeding Clown

The Beeding Clown

09/01/2008 16:25:00
Quote Anchor link
Hoi mensen, ik heb de volgende query..

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
SELECT
    players.id,
    players.name,
    COUNT(replays.id) AS num
FROM
    players
INNER JOIN
    replays
ON
    players.id = replays.player_id
GROUP BY
    replays.player_id
ORDER BY
    players.name
ASC


Het probleem is dat ie alleen de records returned met mensen waar replays van bestaan in de database. Ik wil graag dat ie alle users uit de database trekt of ze nu wel of niet replays hebben. De gehele lijst dus met hun id, naam en het aantal replays.

Ik ben niet zo'n held in het hele SQL gebeuren, so dont be to hard on me..

PS: Met een LEFT JOIN krijg ik 1 record meer.. die heeft 0 replays
Gewijzigd op 01/01/1970 01:00:00 door The Beeding Clown
 
PHP hulp

PHP hulp

19/08/2022 17:15:18
 
Hipska BE

Hipska BE

09/01/2008 16:31:00
Quote Anchor link
INNER JOIN vervangen door LEFT JOIN
 
The Beeding Clown

The Beeding Clown

09/01/2008 16:35:00
Quote Anchor link
Quote:
PS: Met een LEFT JOIN krijg ik 1 record meer.. die heeft 0 replays
Gewijzigd op 01/01/1970 01:00:00 door The Beeding Clown
 
Joren de Wit

Joren de Wit

09/01/2008 17:31:00
Quote Anchor link
@Nano: dat is toch wat je wilde?
 
The Beeding Clown

The Beeding Clown

09/01/2008 18:10:00
Quote Anchor link
Nee ik wil ze allemaal..

hij pakt er nu maar 1 meer dan met gebruik van een INNER JOIN..

Er zijn nog genoeg players die niet te voorschijn komen met de query :(
 
Martijn B

Martijn B

09/01/2008 18:42:00
Quote Anchor link
Zo dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
    players.id,
    players.name,
    COUNT(replays.id) AS num
FROM
    players
LEFT JOIN
    replays
ON
    (players.id = replays.player_id)
ORDER BY
    players.name
ASC
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Joren de Wit

Joren de Wit

09/01/2008 19:18:00
Quote Anchor link
Die mag niet Martijn, je zult een GROUP BY moeten gebruiken omdat je ook COUNT() gebruikt.

@Nano: de eerste query die je geeft kan ook niet. MySQL laat het echter wel toe, maar de query is niet juist. De kolom players.name mist namelijk in je GROUP BY clausule.

Maar met de LEFT JOIN zit je wel op de goede weg, in die richting zul je het wel moeten zoeken. Laat anders je datamodel eens zien, dan weten we waarover we praten.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
The Beeding Clown

The Beeding Clown

09/01/2008 23:35:00
Quote Anchor link
@Blance, tnx voor je reply
Wat zijn de regels voor SQL met GROUP BY, moet de GROUP BY ook in de WHERE staan of snap ik het verkeerd ?
Ben nog niet zo'n expert in SQL

mijn data model ziet er zo uit: (wist niet hoe ik het andes moest doen)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
Table "players" :
id, name, password, email, enz...

Table "replays" :
id, player_id, title, description, votes, score, downloads, upl_date, enz..

Table "comments :
id, replay_id, player_id, comment, date


De table Comments is voor het commentaar posts by de replays
Gewijzigd op 01/01/1970 01:00:00 door The Beeding Clown
 
Joren de Wit

Joren de Wit

09/01/2008 23:57:00
Quote Anchor link
GROUP BY: Het juiste gebruik ervan

In deze tutorial kun je alles lezen over het juiste gebruik van de GROUP BY clausule. Dus wanneer wel en wanner niet, en wat moet je er nou eigenlijk in zetten?

Verder wat betreft je query, deze zou gewoon moeten werken:
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
SELECT
    p.id,
    p.name,
    COUNT(r.id) AS aantal
FROM
    players AS p
LEFT JOIN
    replays AS r
        ON r.player_id = p.id
GROUP BY
    p.id,
    p.name
ORDER BY
    p.name ASC
 
The Beeding Clown

The Beeding Clown

10/01/2008 16:10:00
Quote Anchor link
Beankt voor de link :)
Het artiekel was erg leerzaam. Ik heb de query (na het lezen van het artiekel) aangepast en werkt nu perfect.

Mijn dank is zeer groot :respect:

Grtz Nano
 



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.