Avatar billede lazlowdk Nybegynder
25. april 2005 - 14:26 Der er 20 kommentarer og
1 løsning

En lille hjerne vrider.

Jeg har en database hvor hver bruger har et brugernummer... 10 brugere kan stemme om hvem der er den "beste" (til et eller andet)... det gør de ved at indsætte den beste brugers (efter deres mening) brugernummer i tabellen... men her kommer problemet:

HVORDAN KAN JEG FINDE UD AF HVEM DER HAR FLEST STEMMER?

Jeg kan godt tænke meig til en lang og klodset kode hvor men sammenligner brugernumre... men er der nogen der kan gennemskue en nemmere løsning hvor men til sidst står med brugernummeret på den "beste bruger"...
Avatar billede barklund Nybegynder
25. april 2005 - 14:28 #1
SELECT valgt, COUNT(1) as stemmer FROM brugere GROUP BY valgt
Avatar billede lazlowdk Nybegynder
25. april 2005 - 14:40 #2
COUNT(1) ... hvad gør den og hvad gør GROUP BY??
Avatar billede barklund Nybegynder
25. april 2005 - 14:46 #3
Avatar billede barklund Nybegynder
25. april 2005 - 14:46 #4
Og den gør, hvad du har brug for :)
Avatar billede lazlowdk Nybegynder
25. april 2005 - 15:09 #5
arrg... den vilder mig lidt problemer (sorø... nybegynder)...

hvis jeg gerne vil have det brugernummer "valgt", der fik flest stemmer, ud i variablen $sarj hvad gør jeg så?
Avatar billede barklund Nybegynder
25. april 2005 - 15:17 #6
Så sorterer du efter antal stemmer og udtrækker først række:

$id = mysql_result(mysql_query("SELECT valgt, COUNT(1) as stemmer FROM brugere GROUP BY valgt SORT BY stemmer"), 0, 0);

Tror jeg bare :)

--
Morten Barklund
Avatar billede barklund Nybegynder
25. april 2005 - 15:21 #7
Make that ORDER BY i stedet for SORT BY :)
Avatar billede madssj Nybegynder
25. april 2005 - 15:21 #8
Jeg vil ikke mene at der er noget der hedder SORT BY i SQL :)

Prøv med:

$id = mysql_result(mysql_query("SELECT valgt, COUNT(1) as stemmer FROM brugere GROUP BY valgt ORDER BY stemmer"), 0, 0);

Mads
Avatar billede madssj Nybegynder
25. april 2005 - 15:22 #9
og så skal det nok også være ORDER BY ... DESC

Så altså:

$id = mysql_result(mysql_query("SELECT valgt, COUNT(1) as stemmer FROM brugere GROUP BY valgt ORDER BY stemmer DESC"), 0, 0);
Avatar billede lazlowdk Nybegynder
25. april 2005 - 15:27 #10
Warning: mysql_result(): supplied argument is not a valid MySQL result resource

ehm.. ser ud til at jeg stadig fucker i det :S

hvis jeg skal ha udskrevet brugernummeret kan jeg så skrive:

echo "$id";

??
Avatar billede barklund Nybegynder
25. april 2005 - 15:31 #11
Hm, så er der nok en fejl:

$q = mysql_query("SELECT valgt, COUNT(1) as stemmer FROM brugere GROUP BY valgt ORDER BY stemmer DESC") or die("argh, en fejl: ".mysql_error());
$id = mysql_result($q, 0, 0);
echo $id;

Så skulle der ske noget :)
Avatar billede lazlowdk Nybegynder
25. april 2005 - 15:35 #12
hmm..... nu klager den ikke... men den udskriver heller ikke noget...
Avatar billede lazlowdk Nybegynder
25. april 2005 - 15:37 #13
i min table har jeg følgende værdier:

brugernavn      id      valgt

børge          16        16
Bjarne          20        16
arne            19        19

og så er det jeg gerne vil have $id til at blive 16...
Avatar billede barklund Nybegynder
25. april 2005 - 15:37 #14
Noget må den udskrive - prøv med:

$q = mysql_query("SELECT valgt, COUNT(1) as stemmer FROM brugere GROUP BY valgt ORDER BY stemmer DESC") or die("argh, en fejl: ".mysql_error());
$id = mysql_result($q, 0, 0);
echo "id er: ".$id;

Så er du i hvert fald ret sikker på en eller anden form for output.
Avatar billede lazlowdk Nybegynder
25. april 2005 - 15:44 #15
det eneste der kommer ud er;

id er:
Avatar billede lazlowdk Nybegynder
25. april 2005 - 15:48 #16
men er der nogen der kan fprtælle mig:

hvorfor Count(1)?
hvad gør GROUP BY?

så ka jeg måske fikse lidt med det selv...
Avatar billede barklund Nybegynder
25. april 2005 - 16:22 #17
Se ovenstående manualside - det kræver en del viden og er ikke noget, jeg gider bruge en masse tid på at forklare :)

Og prøv lige med:

$q = mysql_query("SELECT valgt, COUNT(1) as stemmer FROM brugere GROUP BY valgt ORDER BY stemmer DESC") or die("argh, en fejl: ".mysql_error());
$id = mysql_result($q, 0, 'valgt');
echo "id er: ".$id;

:)
Avatar billede lazlowdk Nybegynder
25. april 2005 - 16:33 #18
forståeligt.. men nope.. kein resultat..
Avatar billede barklund Nybegynder
25. april 2005 - 16:51 #19
Hm, prøv lige:

$q = mysql_query("SELECT valgt, COUNT(1) as stemmer FROM brugere GROUP BY valgt ORDER BY stemmer DESC") or die("argh, en fejl: ".mysql_error());
echo "Antal rækker er: ", mysql_num_rows($q), "<br>";
$id = mysql_result($q, 0, 'valgt');
echo "id er: ", $id;
Avatar billede lazlowdk Nybegynder
26. april 2005 - 15:20 #20
Oki... jeg har fundet svaret:

$q = mysql_query("SELECT valgt, COUNT(valgt) as stemmer FROM brugere GROUP BY valgt ORDER BY stemmer DESC") or die("argh, en fejl: ".mysql_error());
echo "Antal rækker er: ", mysql_num_rows($q), "<br>";
$id = mysql_result($q, 0, 'valgt');
echo "id er: ", $id;

så kommer det rigtige svar... men barklund... skriv et svar og få dine point...

;) og tark for hjælpen...
Avatar billede barklund Nybegynder
26. april 2005 - 15:33 #21
Well :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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