webForumDet fria alternativet

SQL fråga, Access

2 svar · 1 092 visningar · startad av angelica

angelicaMedlem sedan juli 2013281 inlägg
#1

Jag ska lista alla användare, med varje poäng.
Där är två tabeller, [user], [score]

SELECT u.ID, u.name, s.score FROM users u, scores WHERE u.ID = s.userID

[user]
ID
name

[score]
ID
userID
score

Detta är en förenklad modell. En användare kan ha många poäng, men bara en poäng varje dag. Så det är ett sätt att behålla historiken lite.

Fråga: Hur gör jag för att bara få EN användare och ETT poäng, det senaste poänget?

Som det är nu kommer det komma alla användare (ska det göra) med alla poäng som respektive användare har. Jag vet inte ens vad jag ska leta efter!

angelicaMedlem sedan juli 2013281 inlägg
#2

Hmm... Det blir jobbigt.
Jag tror vi skiter i detta och löser det med att ha samma värde på två platser:

[user]
score

Det tar emot, men det trasslar lite här och var och det är enklare på alla vis!
Det blir bra så!

Peter SMedlem sedan dec. 20025 483 inlägg
#3

Givet att datumfältet i score heter date:

select u.id
     , u.name
     , s.score
  from user u 
 left
  join score s
    on u.id = s.userid
 where s.date 
     = ( select max(date)
           from score
          where userid = u.id )
128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)