Avatar billede baitianlong Nybegynder
06. juli 2006 - 12:05 Der er 7 kommentarer og
1 løsning

Jeg skal bruge hjaelp til en metode

Jeg har en database med en masse 'posts' fra et forum i. Jeg skal bruge en metode, som kan fortaelle mig hvilke 10 brugere, der har skrevet flest posts.

Derfor vil jeg loebe tabellen igennem og returnere f.eks et HashMap, der har key = brugerens navn og value = antal posts. Men jeg er gaaet lidt kold i det.

Alternativt kunne jeg jo lave en klasse, der har de to attributter og samle brugerne i en List, men der gik jeg ogsaa kold.

Er der een, der gider hjaelpe...
Avatar billede baitianlong Nybegynder
06. juli 2006 - 12:41 #1
Jeg har lavet denne lille metode til at loese problemet, ser den helt sindssyg ud? Input modtages gerne...

public static Map getMostActiveUsers() {
        Connection c = openDatabase();
        ResultSet rs;
        Map res = new HashMap();
        try {
            Statement stmt = c.createStatement();
            rs = stmt.executeQuery("SELECT author FROM biologyonlinepost");
            while (rs.next()) {
                if(!res.containsKey(rs.getString("author"))) {
                    res.put(rs.getString("author"), new Integer(0));
                } else {
                    int i = Integer.parseInt((String) res.get(rs.getString("author")));
                    i++;
                    res.remove(rs.getString("author"));
                    res.put(rs.getString("author"), new Integer(i));
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        return res;
    }
Avatar billede nielle Nybegynder
06. juli 2006 - 12:45 #2
Hvorfor ikke løse problemet allered i SQL-kaldet i stedet for at lave en masse beregninger efterfølgende?

MySQL

SELECT author, count(*) AS antalPoster FROM biologyonlinepost GROUP BY author ORDER BY antalPoster DESC LIMIT 0, 10

MS SQL, Access:

SELECT TOP 10 author, count(*) AS antalPoster FROM biologyonlinepost GROUP BY author ORDER BY antalPoster DESC
Avatar billede baitianlong Nybegynder
06. juli 2006 - 12:49 #3
count(*) ?? giver det mig ikke bare det hele antal af posts i db?
Avatar billede nielle Nybegynder
06. juli 2006 - 13:06 #4
Ikke med GROUP BY. Så giver den antallet for hver author.
Avatar billede baitianlong Nybegynder
06. juli 2006 - 13:09 #5
det er jo fantastisk, saa putter jeg det derefter i en klasse og propper dem i en List?
Avatar billede nielle Nybegynder
06. juli 2006 - 13:21 #6
Ja, og "LIMIT 0, 10" eller (TOP 10) skulle så gerne sikre at du faktisk kun får de 10 authors som har postet flest gange.
Avatar billede baitianlong Nybegynder
06. juli 2006 - 13:33 #7
sweet... Smider du lige et svar :)
Avatar billede nielle Nybegynder
06. juli 2006 - 13:38 #8
Svar :^)

Hvis du stadig har nogle problemer med at få det til at virke ... ja, så spørger du selvfølgelig bare her i denne tråd. :^)
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
Kurser inden for grundlæggende programmering

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