Avatar billede cool_casper Nybegynder
16. november 2003 - 12:50 Der er 12 kommentarer og
1 løsning

COUNT i mysql

Hi,

Kan ikke få count til at virke i MySQL. Jeg har prøvet følgende:
$db_query = mysql_query("SELECT id, title, user, COUNT(*) AS count, DATE_FORMAT(date, '%e/%c - %Y at %H:%i') AS date FROM news ORDER BY date DESC LIMIT " . $start_point . ", 5");

..og:
echo mysql_num_rows($news_data);

Ingen af dem virkede.. Jeg får en "..supplied argument is not a valid MySQL result resource in .."
Hvad gør jeg?
Avatar billede ohmish Nybegynder
16. november 2003 - 12:57 #1
$hent = mysql_query("SELECT * FROM news") or die (mysql_error());
echo mysql_num_rows($hent);
Avatar billede cool_casper Nybegynder
16. november 2003 - 12:59 #2
dvs. jeg skal hente ALLE data ud for at tælle? Kunne jeg ikke nøjes med id, f.eks.? mysql_query("SELECT id FROM news") ?
Avatar billede bleze Nybegynder
16. november 2003 - 12:59 #3
man kan ikke bruge en count sammen med andre felter på den måde
Avatar billede cool_casper Nybegynder
16. november 2003 - 13:05 #4
Hmm.. Jeg får kun "1" udskrevet. Selvom der er 6 poster i tabellen...?
Avatar billede erikjacobsen Ekspert
16. november 2003 - 13:08 #5
hvis du bruger 

  select count(*) as count from ....

får du selvfølgelig een række. Tallet står i feltet count
Avatar billede cool_casper Nybegynder
16. november 2003 - 13:25 #6
Jeg forstår ikke helt? Hvorfor skulle jeg kun få en række ved at skrive: "SELECT COUNT(*) AS count FROM news" ?
Avatar billede tipsen Nybegynder
16. november 2003 - 13:27 #7
Prøv at forklare, hvad det er for et output du ønsker...
Avatar billede erikjacobsen Ekspert
16. november 2003 - 13:28 #8
Du får een række med eet felt, og deri står antallet fra beregningen med count.
Avatar billede cool_casper Nybegynder
16. november 2003 - 13:30 #9
Jeg vil gerne have et tal ud som viser hvor mange rækker (posts, records om i vil..) der findes i tabellen news..! :)
Avatar billede detox Nybegynder
16. november 2003 - 14:24 #10
Prøv:

echo mysql_result(mysql_query("SELECT COUNT(*) FROM news"),0);

Så ser du.
Avatar billede jakoba Nybegynder
16. november 2003 - 14:50 #11
funktionen count() benyttes i forbindelse med gruppering af rækker. Og når du henter feltværdier ud begrænser du hvormange rækker der kan grupperes sammen

fx en tabel der indeholder alder og navn
alder navn
  25  Ole
  33  Per
  25  Marie

hvis du siger "SELECT alder, COUNT(*) AS cnt FROM dentabel" får du
alder cnt
  25  2              // to rækker havde samme værdi i alder
  33  1

men hvis du siger "SELECT *, COUNT(*) AS cnt FROM dentabel" får du
alder navn    cnt
  25  Ole      1
  33  Per      1
  25  Marie    1
// de 2 rækker med samme værdi i 'alder' kan ikke grupperes sammen for de har forskellig værdi i 'navn'

og med "SELECT COUNT(*) AS cnt FROM dentabel" er det helt ligemeget hvad der står i felterne; alle rækker grupperes sammen så cnt bliver 'antallet af rækker'
  cnt
    3

mvh JakobA
Avatar billede erikjacobsen Ekspert
16. november 2003 - 14:55 #12
Måske du skal tilføje en GROUP BY et par stedet, jakoba
Avatar billede cool_casper Nybegynder
17. november 2003 - 14:36 #13
Det virker nu. Connection var blevet lukket tidligere i koden! :\
Takker for god forklaring JacobA!
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