webForumDet fria alternativet

Hela tabeller joins

1 svar · 283 visningar · startad av rincewind

rincewindMedlem sedan nov. 2003104 inlägg
#1

Om jag har följande tabeller:

// userstable
ID | username
--------------
1 | user1
2 | user2
3 | user3

// gamestable
ID | amount | userID | name
------------------------------
1 | 230 | 1 | game1
2 | 200 | 1 | game2
3 | -10 | 3 | game3

// logins
ID | userID | time
-------------------------
1 | 1 | 2006-11-01
2 | 2 | 2006-11-02
3 | 1 | 2006-11-03
4 | 1 | 2006-11-04
5 | 1 | 2006-11-06

Och gör sedan frågan:
SELECT u.username, COUNT(g.ID) as gamesPlayed, COUNT(l.ID) as logins FROM usertable u INNER JOIN gamestable g ON g.userID=u.ID INNER JOIN logins l ON l.userID=u.ID GROUP BY u.ID

Ger det mig (pga inner joinen):
u.username | gamesPlayed | logins
-------------------------------------------
user1 | 2 | 4

MEN jag skulle vilja ha detta. Dvs att den selectar alla rader och räknar ihop det..:

u.username | gamesPlayed | logins
-------------------------------------------
user1 | 2 | 4
user2 | 0 | 1
user3 | 1 | 0

Någon som vet hur man fixar detta???

Mvh
-- Rincewind

@ndersMedlem sedan juni 200032 969 inlägg
#2

Börja med att byta INNER JOIN mot LEFT JOIN.

Mvh

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)