Avatar billede stigc Nybegynder
14. april 2001 - 16:25 Der er 13 kommentarer og
2 løsninger

Endnu mere SQL syntaks (jubiiiii.......)

   
jeg har tre tabeller. User indeholder brugerid, privategameid mm., tips indholder score og userid mm., privategame indeholder navnet på et \"lukket spil\".

Jeg har lavet en SQL sætning der finder gennemsnittet på alle lukket spil, ved at tage gennemsnittet af alle dennes medlemmers score:

SQL = \"SELECT  AVG(score) as avgScore FROM tips, user, privategame\"
    SQL = SQL & \" WHERE tips.userid = user.userid AND \"
    SQL = SQL & \" user.privategame=privategame.privategameid \"
    SQL = SQL & \" GROUP BY user.privategame\"


Hvordan få jeg samtidig fat i spillets navn?



se relaterede spm :

http://www.eksperten.dk/spm/64318
http://www.eksperten.dk/spm/64063

anyone?
Avatar billede stigc Nybegynder
14. april 2001 - 16:28 #1
\"perla\"\'s udemærkede svar fra http://www.eksperten.dk/spm/64318 kan desværre ikke bruges her! Ikke så vidt jeg kan se.....
Avatar billede perla Nybegynder
14. april 2001 - 16:38 #2
Kan du offentliggøre databasen, så skal jeg se om jeg kan hjælpe dig
Avatar billede stigc Nybegynder
14. april 2001 - 17:04 #3
jeg kan sende den til dig! e-mail?
Avatar billede perla Nybegynder
14. april 2001 - 17:12 #4
Ok. PerLA@mail.tele.dk
Avatar billede stigc Nybegynder
14. april 2001 - 17:14 #5
tror jeg fik den til at virke:

    SQL = \"SELECT AVG(score) as avgScore, max(privategame.name) as name FROM tips, user, privategame\"
    SQL = SQL & \" WHERE tips.userid = user.userid AND \"
    SQL = SQL & \" user.privategame=privategame.privategameid \"
    SQL = SQL & \" GROUP BY user.privategame\"

Dog lidt et hak\' . Men skulle det her ikke virke. Det gør det tilsyneladende. Jeg selecter navnet ved at finde max, men det er jo max er 1 til mange ens navne, så det virker vel. Eller hvad?
Avatar billede stigc Nybegynder
14. april 2001 - 17:18 #6
jeg er ikke meget for at sende databasen, så hvis det her er virker gør jeg det ikke! Men er du enig i at det skulle virke?

Du kan stadig få nogen point ved et kompentent svar der be- eller afkræfter SQL sætningen.
Avatar billede stigc Nybegynder
14. april 2001 - 17:18 #7
Kan du se porbelmatikken i forhold til
http://www.eksperten.dk/spm/64318  ?
Avatar billede stigc Nybegynder
14. april 2001 - 17:20 #8
problematikken
Avatar billede perla Nybegynder
14. april 2001 - 17:26 #9
Max på et tekstfelt, kreativt, men burde virke uden, eventuelt med distinctrow

Har lidt problem med dine tabelname og felter, da nogle af dem findes som både tabel og felt

Avatar billede stigc Nybegynder
14. april 2001 - 17:41 #10
har prøvet men DISTINCT men kunne ikke få det til at virke
Avatar billede stigc Nybegynder
19. april 2001 - 15:18 #11
nogen forslag, andet end MAX.. Har det lidt dårlig med den løsning?
Avatar billede mwittrock Nybegynder
20. april 2001 - 17:27 #12
Prøv at starte med den simpleste SELECT sætning, som kun involverer tabellerne User og Tips:

SELECT  u.PrivateGame AS ID,
        AVG(t.Score) AS AvgScore
FROM    User AS u, Tips AS t
WHERE    u.UserID = t.UserID
GROUP BY u.PrivateGame

Denne sætning returnerer (hvis jeg forstår dine tabeller korrekt) en række pr. spil, indeholdende spillets ID og det gennemsnitlige antal point.

Nu er det trivielt at udvide den sætning, så du i stedet for IDet får returneret spillets navn:

SELECT  p.Name AS Name,
        AVG(t.Score) AS AvgScore
FROM    User AS u, Tips AS t, PrivateGame AS p
WHERE    u.UserID = t.UserID
AND      u.PrivateGame = p.PrivateGameID
GROUP BY p.Name

Sætningen kan blive lidt pænere, hvis dit databaseprodukt (hvilket bruger du?) understøtter INNER JOIN syntaksen.
Avatar billede stigc Nybegynder
21. april 2001 - 11:03 #13
ka men det kræver at privatename er unikt ikke? Det er user id\'et der er unikt...
Avatar billede mwittrock Nybegynder
23. april 2001 - 10:47 #14
Forespørgslen vil uden GROUP BY og AVG returnere én række pr. score pr. spil. pr. bruger (igen, hvis jeg forstår dine tabeller korrekt). Når du tilføjer GROUP BY og AVG får du m.a.o. den gennemsnitlige score pr. spil.
Avatar billede stigc Nybegynder
14. juni 2001 - 16:26 #15
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester