webForumDet fria alternativet

SQL fråga, Access

Databaser & SQLur Databashanterare & SQL

2 svar · 1 093 visningar · startad av angelica

Medlem sedan juli 2013280 inlägg
Frågan#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!

Medlem sedan juli 2013280 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å!

Medlem 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 )
263 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
132 ms — hämta forumlista (db)
127 ms — hämta statistik (db)
131 ms — hämta tråd, inlägg och bilagor (db)