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å!
Databaser & SQLur Databashanterare & SQL
2 svar · 1 093 visningar · startad av angelica
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!
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å!
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 )