Avatar billede lademan Novice
10. oktober 2003 - 10:21 Der er 20 kommentarer og
2 løsninger

mest økonomiske count-funktion

hvordan ser den mest økonomiske count-funktion ud? den skal kun tælle antallet af forekomster af fx id.
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 10:24 #1
Hvad mener du med "forekomster af id" ?

Det mest økonomiske er at tælle tupler (rækker) med count(*). Det tager
længere tid med fx count(feltnavn)

Men hvad er det du vil?
Avatar billede lademan Novice
10. oktober 2003 - 10:25 #2
ok, du giver ikke et helt eksempel?
Avatar billede arne_v Ekspert
10. oktober 2003 - 10:26 #3
COUNT er uden tvivl optimeret rigtigt meget, så COUNT er uden tvivl
det rigtige valg.

Husk at COUNT(*) tæller antal records i tabellen mens COUNT(feltnavn)
tæller antal records hvor feltet ikke er NULL !

Så vælg den rette til dit kontekst.
Avatar billede lademan Novice
10. oktober 2003 - 10:29 #4
jeg skal kun tælle antallet af rækker i en tabel. hvad er det bedste i den situation? (gerne kode)
Avatar billede bjornicle Nybegynder
10. oktober 2003 - 10:29 #5
Hvis du skal bruge antallet af raekker i tabellen uden at det nodvendigvis behover at vaere 100% korrekt, saa kan du ogsaa kore folgende:

SELECT rows FROM sysindexes
  WHERE id = OBJECT_ID('table_name') AND indid < 2

Hvor table_name er din tabel, det eneste problem her er at dette tal ikke bliver opdateret hele tiden, men kun en gang imellem
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 10:29 #6
Eksempel? Jeg må igen spørge dig om hvad du vil. Du kan selvfølgelig godt få

  select count(*) from poulnyrup

men der er jo mange varianter ;)
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 10:30 #7
"tælle antallet af rækker". så: tælle antallet af rækker
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 10:30 #8
mener:
"tælle antallet af rækker". så:  select count(*) from poulnyrup
Avatar billede lademan Novice
10. oktober 2003 - 10:32 #9
Den her virker ikke:

$number_indlaeg = mysql_query("SELECT COUNT(*) as number_indlaeg FROM forum_indlaeg WHERE forum = '$f' GROUP BY emne");
print "$number_indlaeg";
Avatar billede lademan Novice
10. oktober 2003 - 10:37 #10
hvad går der galt?

$number_indlaeg = mysql_query("SELECT COUNT(*) FROM forum_indlaeg WHERE forum = '$f' GROUP BY emne");
print "$number_indlaeg";
Avatar billede lademan Novice
10. oktober 2003 - 10:54 #11
ingen der lige vil hjælpe mig det sidste stykke på vejen?
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 11:14 #12
$result = mysql_query("SELECT COUNT(*) as number_indlaeg FROM forum_indlaeg WHERE forum = '$f');
$row=mysql_fetch_array($result);
print $row['number_indlaeg'];
Avatar billede lademan Novice
10. oktober 2003 - 11:22 #13
er det så simpelt?

er det en økonomisk (er glad for det ord :-) måde at tælle på?
Avatar billede lademan Novice
10. oktober 2003 - 11:23 #14
kan jeg ikke bruge GROUP BY også?
Avatar billede lademan Novice
10. oktober 2003 - 11:37 #15
hvorfor kan man egentlig ikke det??
Avatar billede lademan Novice
10. oktober 2003 - 11:37 #16
Den her er i hvertfald ikke retvisende:

$row = mysql_fetch_array(mysql_query("SELECT COUNT(id) as number_indlaeg FROM forum_indlaeg GROUP BY id"));
print "$row[number_indlaeg]";
Avatar billede lademan Novice
10. oktober 2003 - 11:38 #17
heller ikke når jeg skifter emne i GROUP BY
Avatar billede lademan Novice
10. oktober 2003 - 11:43 #18
for missen, hvad er der los? har prøvet at tjekke efter på mysql.com, men jeg kan ikke finde fejlen... hjæææælp
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 12:18 #19
Nu startede du med at spørge om antal række i en tabel, så det var det du fik
af mig. Du vil så have antal indlæg pr. emne. Så skal din SQL se ud som

$result = mysql_query("SELECT emne,COUNT(*) as number_indlaeg FROM forum_indlaeg WHERE forum = '$f' group by emne");

(glemte vist en " før)

og du skal bare løbe det igennem som ethvert andet resultat (while-løkke, du ved)
Avatar billede lademan Novice
10. oktober 2003 - 16:13 #20
takker! bare svar erik :-)
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 16:47 #21
ok ;)
Avatar billede erikjacobsen Ekspert
10. oktober 2003 - 16:47 #22
oookay ;))
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