Cemi Skrevet 9. mai 2011 Del Skrevet 9. mai 2011 (endret) Hei! Vi holder på med et skoleprosjekt, og jeg prøver å lage et helt basic Achievement system til et spill vi lager. Jeg har følgende tabeller (Sånn ca, litt simplifisert for eksempelets skyld). [userHasAchievements] .UserID .AchievementID [userStatistics] .UserID .TroopsKilled Så har jeg f.eks. et Achievement med ID 1 hvor man skal ha en større verdi enn 50 i TroopsKilled. Jeg ønsker da et Select statement som velger alle verdier fra UserStatistics som har TroopsKilled>50, men som ikke velger UserID'er som ikke allerede eksisterer i UserHasAchievements. For eksempel dersom user 1, 2 og 3 oppfyller kravene, men 1 allerede ligger i UserHasAchievements med AchievementID 1, så ønsker jeg å få tilbake user ID 2 og 3. Jeg har prøvd meg med noen joins, men det ser ikke helt ut til å føre frem. Det nærmeste jeg har kommet er SELECT UserStatistics.UserIDFROM UserStatistics FULL OUTER JOIN UserHasAchievements ON UserHasAchievements.UserID = UserStatistics.UserIDWHERE (UserStatistics.TroopsKilled >= 50) AND (UserHasAchievements.AchievementID <> 1)[/Code] Men denne ekskluderer UserID'er som ikke finnes i UserHasAchievements i det hele tatt, og den inkluderer ID 1 dersom den har et Achievement med en annen ID. FULL OUTER JOIN ser ikke ut til å gi helt det resultatet jeg forventet når jeg las om funksjonen på Wikipedia, syntes det var merkelig. Alt gjøres selvfølgelig mer automatisert i applikasjonen, det er bare for å finne korrekt syntax for det jeg vil gjøre at det skjer med statiske tall. Føler posten ble meget rotete, men håper det går an å forstå hva jeg mener.Dersom noen kan hjelpe meg ville jeg være veldig takknemlig Endret 9. mai 2011 av Cemi Lenke til kommentar
Cemi Skrevet 9. mai 2011 Forfatter Del Skrevet 9. mai 2011 Tror jeg fant ut av det, relativt rett etter jeg postet her Koden var: SELECT UserID FROM UserStatistics WHERE (NOT EXISTS (SELECT UserID FROM UserHasAchievements WHERE (UserID = UserStatistics.UserID) AND (AchievementID = 1))) AND (TroopsKilled >= 50) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå