Avatar billede punnishment Nybegynder
30. marts 2002 - 15:42 Der er 8 kommentarer og
1 løsning

Count samtidig med normal udtræk

Jeg har 2 tabeller:

Bruger:
Id | navn
1 | test

Bank
Id | ......... | Point | Til |


Nu skal der laves en top 25 liste hvor brugernes point tælles fra en anden tabel altså Bank


Hvordan gøres det?
Avatar billede punnishment Nybegynder
30. marts 2002 - 15:45 #1
Noget med

SELECT COUNT(bank.point) AS Antal FROM Bank WHERE bruger.id = bank.til, bruger.id, bruger.navn FROM Bruger ORDER BY Antal DESC;


men den ser TOTAL forkert ud :)
Avatar billede coltau Juniormester
30. marts 2002 - 18:15 #2
Hvis der kun er en post i tabellen, bank pr. bruger så dur denne:

SELECT TOP 25 bruger.navn, bank.point
FROM bank INNER JOIN bruger ON bruger.id=bank.til
ORDER BY bank.point DESC;
Avatar billede coltau Juniormester
30. marts 2002 - 18:29 #3
Hvis der er flere poster i tabellen, bank pr bruger så dur denne:

SELECT Sum(bank.point) AS [sum], bruger.navn
FROM bank INNER JOIN bruger ON bruger.id = bank.til
GROUP BY til, bruger.navn;
Avatar billede coltau Juniormester
30. marts 2002 - 18:34 #4
glemte 25 og rækkefølge.

SELECT Top 25 Sum(bank.point) AS [sum], bruger.navn
FROM bank INNER JOIN bruger ON bruger.id = bank.til
GROUP BY til, bruger.navn
ORDER BY Sum(bank.point) DESC;
Avatar billede punnishment Nybegynder
31. marts 2002 - 01:05 #5
okay, det ser ud til det jeg leder efter :)
Nu har jeg så muligheden for at give dig de 15 points som jeg skylder dig.

Meen, jeg tror ikke den vil virke, da mySQL databasen ikke understøtter INNER JOIN, eller gør den?

TOP 25 ændre jo så til LIMIT 25
Avatar billede coltau Juniormester
31. marts 2002 - 10:45 #6
Jeg har testet denne på MySql. Jeg kan desværre ikke få den til at æde LIMIT samtidig uden at den melder syntax-fejl.

SELECT bruger.navn, SUM(bank.point) as point
FROM bank INNER JOIN bruger ON bruger.id = bank.til
GROUP BY bank.til, bruger.navn
order by point desc;
Avatar billede punnishment Nybegynder
31. marts 2002 - 12:51 #7
her over virker limit fint...

husk LIMIT skal altid være til sidst

SELECT bruger.navn, SUM(bank.point) as point
FROM bank INNER JOIN bruger ON bruger.id = bank.til
GROUP BY bank.til, bruger.navn
ORDER BY point DESC LIMIT 25;

---------------------
Det smarte med limit er at du kan vælge hvor mange den skal springe over

.......LIMIT a,b;"

a = "hvor mange felter den skal springe over"
b = "hvor mange felter den skal hente"

.......LIMIT 0,10;"
.......LIMIT 10,10;"  ' vælger de næste 10

Paging = meget nemmere med en mySQL database


PS: Jeg tillægger lige 30 points som jeg skylder dig..!

OG jeg har lige et til problem, hvordan sætter jeg en til ting ind i den sætning??


Det er fordi mine bank'er er opdelt efter kategorier, så når folk er inde under den ene kategori så skal det hele foretages??

SELECT bruger.navn, SUM(bank.point) as point
FROM bank WHERE bank.catid = " & request("id") & " INNER JOIN bruger ON bruger.id = bank.til
GROUP BY bank.til, bruger.navn
order by point desc;


det virker ikke
Avatar billede punnishment Nybegynder
31. marts 2002 - 12:55 #8
det fik jeg så selv løst :)

SELECT bruger.navn, SUM(bank.point) as point
FROM bank INNER JOIN bruger ON bruger.id = bank.til AND bank.catid = " & request("id") & " GROUP BY bank.til, bruger.navn
order by point desc;

jeg takker mange gange for hjælpen!
Avatar billede coltau Juniormester
01. april 2002 - 11:30 #9
Ja så det efterhånden mig der skal have dårlig samvittighed - da du selv har løst en del af det. :-}
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