Jag har en MS SQL 7.0 med en databas som heter Highscore där jag vill lagra poäng & smeknamn för att ha till en topplista från ett spel.
min insert ser ut såhär:
oConn.Execute("INSERT INTO Highscore (score,nick) VALUES('1100','"Pelle"')")
Jag skulle vilja (om det är möjligt) att kolla av om resultatet (score) platsar för "top 20"...om det inte gör det, så gör ingen insert....kan man realisera det i själva SQL-satsen?
Varför har du score som en character? Byt till integer snarast (annars fungerar inte nedanstående).
INSERT INTO Highscore (score,nick)
select distinct 1100,'Pelle'
from Highscore
where 1100 not in (
select top 20 score
from highscore
order by score desc)
Problemet med denna selectsats är juh att även om jag byter namn eller är inom top20, så läggs inte resultatet in om jag har samma poäng som någon annan :(
Jag vill att alla resultat inom topp 20 ska läggas in oberoende av nick eller nåt annat.
INSERT INTO Highscore (score,nick)
select distinct 1100,'Pelle'
from Highscore
where 1100 >= any (
select top 20 score
from highscore
order by score desc)
INSERT INTO Highscore (score,nick)
select distinct 1100,'Pelle'
from Highscore
where 1100 > (select min(score)
from (select top 20 score
from highscore
order by score desc)dt )
Det funkar ju kanonbra, förutom att den lägger in så många poster....Skulle man direkt efter INSERTEN köra en DELETE på alla poster över TOP20 och vidare...
typ:
DELETE FROM Highscore WHERE score < (select top 20 score from highscore order by score desc)