15. september 2004 - 23:52Der er
3 kommentarer og 1 løsning
Kompliceret udtræk fra database
Hej, Jeg skal hive noget data ud fra de tabeller I kan se nedenunder. Idéen er at lave statistik over hvor mange procent af brugerne på siden, der har nogle bestemte interesser, men SQL'en er ved at være lidt for kompliceret til mig. Håber der er nogle kloge hoveder derude :)
ClubInterest inderholder information om interesserne (navn + id), og personInterest er en mange-til-mange tabel mellem person og clubInterest. Det er ekstra kompliceret, da det ikke er alle brugere der har valgt interesser, og jeg vil kun finde dem der har valgt interesser...
Dvs. at jeg gerne vil kunne printe noget lignende det her: Der er 302 brugere der har valgt interesser - Fodbold: 35% - Floorball: 23% - Ishockey: 67% - Curling: 3%
Her er tabellerne: tabelnavn: person - personID - (indeholder også en masse andre tabeller, som ikke bruges i denne forespørgsel)
sql = "SELECT clubInterest.navn, (Count(personInterest.personID)/(select count(*) from person)*100) AS antal FROM clubInterest LEFT JOIN personInterest ON clubInterest.interestID = personInterest.interestID GROUP BY clubInterest.navn;"
Set rs=Conn.Execute(sql) do while not rs.EOF Response.write "-" & rs("navn") & ": " & Round(rs("antal")) & "%<br>" rs.Movenext loop
og vil du sortere efter hjøste antal kan det gøres ved at rette SQL sætningen:
sql = "SELECT clubInterest.navn, (Count(personInterest.personID)/(select count(*) from person)*100) AS antal FROM clubInterest LEFT JOIN personInterest ON clubInterest.interestID = personInterest.interestID GROUP BY clubInterest.navn ORDER BY Count(personInterest.personID) DESC;"
select name, 100.0 * (select count(distinct personid) from personInterest pi where pi.interestID = ci.interestID)/(select count(distinct personID) from personInterest ) procent, (select COUNT(DISTINCT p.personID) FROM person p, personInterest pi WHERE p.personID = pi.personID) users from clubInterest ci
Synes godt om
Ny brugerNybegynder
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.