Avatar billede mads1987 Nybegynder
28. februar 2004 - 14:08 Der er 11 kommentarer og
1 løsning

mysql_query, hent forskellige og antal

Hej jeg har brug for lidt hjælp til en mysql_query.

Situationen er den at jeg har en masse navne i en database (Jens, Ole, Peter osv.)

Jeg ville gerne have hentet dem ud sådan, at hver navn kun kom en gang (altså selvom der er to gange Jens, skal det kun optræde en gang)

Og så ville jeg gerne have talt dem, så der f.eks. stod:

Jens (3)
Ole (2)

fordi jens optræder 3 gange, og ole 2 gange.

Kan dette lade sig gøre?

Med venlig hilsen.
Avatar billede jakoba Nybegynder
28. februar 2004 - 14:17 #1
SELECT  navn, COUNT(navn)
FROM    dintablesnavn
GROUP BY navn

mvh JakobA
Avatar billede websam Nybegynder
28. februar 2004 - 14:20 #2
Så må det jo være noget i stilen med :

Select Count(Navn) From Tabel Group By Navn Order By Navn

Jeg har ikke testet det men prøv det ad :o)

/Websam
Avatar billede mads1987 Nybegynder
28. februar 2004 - 14:46 #3
Det virker fint! Men hvordan får jeg ud hvor mange gange hvert navn optræder i databasen?
Avatar billede jakoba Nybegynder
28. februar 2004 - 14:51 #4
Hver række giver 2 værdier
De kan adresseres enten ved navn, eller ved nummer:

while( $row = mysql_fetch_array( $resultatset ) ) {
    echo $row['navn'] . " ";            // skriver namvnet
    echo $row[1] . "<br>";              // skriver antallet.
}

eller du kan give antallet et navn:

SELECT  navn, COUNT(navn) AS antal
FROM    dintablesnavn
GROUP BY navn

while( $row = mysql_fetch_array( $resultatset ) ) {
    echo $row['navn'] . " ";            // skriver namvnet
    echo $row['antal'] . "<br>";        // skriver antallet.
}

mvh JakobA
Avatar billede mads1987 Nybegynder
28. februar 2004 - 15:01 #5
Så virker det! - men der er opstået endnu et problem, der er en del felter hvor der ikke er nogen navne. Så skriver den bare " (66)" fordi der er 66 tomme felter, kan "fortælle" den at hvis "navn" er tomt, skal den ikke bruge den.
Avatar billede jakoba Nybegynder
28. februar 2004 - 15:09 #6
Ja da:

SELECT  navn, COUNT(navn) AS antal
FROM    dintablesnavn
WHERE  navn IS NOT null
GROUP BY navn

så ignorerer den dem hvor navn ikke har nogen værdi
Avatar billede mads1987 Nybegynder
28. februar 2004 - 15:18 #7
Er det også muligt, jeg lærer hvertfald noget idag.
Noget helt andet er at jeg ikke lige kan få det til at virke:

$hent = mysql_query("SELECT reference, COUNT(reference) AS antal FROM CMS_statistik WHERE reference IS NOT null GROUP BY reference");
while( $row = mysql_fetch_array($hent) ) {

$reference = $row['reference'];
$antal = $row['antal'];

    echo "$reference";            // skriver namvnet
    echo " ($antal)<br>";        // skriver antallet.
Avatar billede mads1987 Nybegynder
28. februar 2004 - 16:25 #8
Problemet ligger i at den stadig viser " (66)"
Avatar billede jakoba Nybegynder
28. februar 2004 - 16:35 #9
så får feltet reference nok en default værdi i din tabel, fx med en linie a  la:
    reference CHAR(25) DEFAULT "",
i den kommandu du brugte til at oprette tabellen.

prøv med:
$hent = mysql_query("SELECT reference, COUNT(reference) AS antal FROM CMS_statistik WHERE reference <> '' GROUP BY reference");
Avatar billede mads1987 Nybegynder
28. februar 2004 - 16:38 #10
Ja så virker det sørme. Hvad er det <> '' betyder? :)
Avatar billede jakoba Nybegynder
28. februar 2004 - 16:45 #11
<>  er operatoren for 'forskellig fra", ligesom  !=  i php
Avatar billede mads1987 Nybegynder
28. februar 2004 - 16:47 #12
Nåh.. Smart, tak skal du have.
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