Avatar billede webcreator Nybegynder
20. juli 2004 - 14:57 Der er 9 kommentarer og
1 løsning

Count og select i samme string

Hej Eksperter.

$query = mysql_query("SELECT COUNT(`id`) AS total FROM contributions WHERE `category` = '".$output["id"]."'") or die(mysql_error());
$output2 = mysql_fetch_array($query2);

Hvordan gør jeg det muligt, også at hente fra feltet "time", hvis jeg har et sådan ?

Jeg har prøvet med :


$query = mysql_query("SELECT `time`, COUNT(`id`) AS total FROM contributions WHERE `category` = '".$output["id"]."'") or die(mysql_error());
$output2 = mysql_fetch_array($query2);

Men det giver fejlen :

Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

Hvad gør jeg dog galt ?
Avatar billede muddi Praktikant
20. juli 2004 - 15:10 #1
Hvad er det nøjagtigt du ønsker at hente fra databasen? Er det antallet af "id" der har samme "time"? Eller ønsker du både at hente det totale antal "contributions" fra databasen samtidig med at du vil hente alle timefelterne? Det sidste er ikke muligt!
Avatar billede webcreator Nybegynder
20. juli 2004 - 15:14 #2
Jeg ønsker at tælle det samlede antal poster hvor category = 'fx. 1'. Samtidig ønsker jeg at kunne hente data fra feltet 'time'. Men hvis det ikke er muligt, så må jeg jo lave en ekstra query :-/
Avatar billede webcreator Nybegynder
20. juli 2004 - 15:14 #3
For
Avatar billede webcreator Nybegynder
20. juli 2004 - 15:18 #4
Hmm - eksperten skaber sig lidt. Ved ikke hvorfor min kommentar blev til et svar.

Oh well - hvad er forresten forskellen på flg. :

$posts = mysql_result($query,0); og en alm. $output2 = mysql_fetch_array($query); ?

Er det blot, at resultatet for den førstnævnte ligger i $posts, mens jeg må skrive output2["total"] for at få resultatet ved den anden?
Avatar billede tonnybrandt Nybegynder
20. juli 2004 - 16:22 #5
Jeg er ikke sql haj, men du er nok nødt til lige at "ombryde" teksten i din sql sætning over flere linier så vi kan se hele sætningen. Ellers er det svært at se hvad du gør galt.
Avatar billede webcreator Nybegynder
20. juli 2004 - 16:25 #6
Jeg gør ikke noget galt. Tror du har galt fat i spørgsmålet. Muddi har lige sagt at min løsning ikke kan lade sig gøre - og så stillede jeg et tillægsspørgsmål :)
Avatar billede tonnybrandt Nybegynder
20. juli 2004 - 16:30 #7
Ok, jeg bemærkede blot at det ikke er muligt at se hele din select sætning, men læste ikke kommentarerne.

Så er alt jo iorden.
Avatar billede muddi Praktikant
20. juli 2004 - 16:43 #8
Forskellen på mysql_result() og mysql_fetch_array() er at den sidste er hurtigere :)

mysql_result() arbejder i øvrigt kun med den første række i dit resultat. Den anden parameter i mysql_result() er det det felt du ønsker udskrevet, startende fra 0.

Jeg vil anbefale dig at bruge mysql_fetch_array() eller mysql_fetch_row()!

Du kan godt tælle sammen hvor mange poster der har "category = 1". Men da COUNT() er en aggregat-funktion kræver den at du også bruger GROUP BY.

Så lav en "GROUP BY category", hvis du så f.eks. kun vil se de kategorier der har flere end fem skal du indsætte en "HAVING antal > 5"

Læs mere om aggregat-funktioner på http://dev.mysql.com/
Avatar billede webcreator Nybegynder
20. juli 2004 - 16:45 #9
Jeg siger mange tak, Muddi.
Smider du et svar?
Avatar billede muddi Praktikant
20. juli 2004 - 16:47 #10
svar ;)
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